程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 兩種方式實現簡單工廠

兩種方式實現簡單工廠

編輯:.NET實例教程

這裡根據名字獲取改名字的FirstName和LastName,這裡提供了兩種方式,所以可以采用簡單工廠針對不同的形式創建不同的實例。這裡還兩種實現方式,一種是完全針對類的編程,另一種就是針對接口和類的編程。

(一),針對類

首先有個Namer基類



public class Namer 
    ...{
        protected string fName;
        protected string lName;

        public string GetFirstName() 
        ...{
            return fName;
        }
        public string GetLastName() 
        ...{
            return lName;
        }
    }

這裡定義了受保護的成員fName和lName供派生類使用。下面就是兩個繼承Namer類的派生類,分別實現了兩種獲取名字的方法。



public class FirstFirst : Namer 
    ...{
        public FirstFirst(string name) 
    ...{
            int i = name.IndexOf(" ");
            if (i > 0)
            ...{
                fName = name.Substring(0, i).Trim();
                lName = name.Substring(i + 1).Trim();
            }
            else 
            ...{
                lName = name;
                fName = "";
            }
        }
    }
    public class LastFirst:Namer
    ...{
        public LastFirst(string name) 
    ...{
            int i = name.IndexOf(",");
            if (i > 0)
            ...{
                fName = name.Substring(0, i).Trim();
                lName = name.Substring(i + 1).Trim();
            }
            else
            ...{
                lName = name;
                fName = "";
            }
        }
    }

 他們分別針對fName和lName進行賦值。當把FirstFirst或LastFirst類轉化為Namer類時,其實就是把子類的屬性的值給了父類的相應的屬性。下面給出了名字的構造工廠:



public class NameFactory
    ...{
        public NameFactory() 
  ...{ }
        public Namer GetName(string name) 
        ...{
            if (name.IndexOf(",") > 0)
            ...{
                return new LastFirst(name);
            }
            else 
            ...{
                return new FirstFirst(name);
            }
        }
    }

下面是使用上面這裡類的方法:



            string name = this.textBox1.Text;
            NameFactory nameFactory = new NameFactory();
            Namer namer = nameFactory.GetName(name);
            this.textBox2.Text = namer.GetFirstName();
            this.textBox3.Text = namer.GetLastName();

(二)針對接口和類

這裡把操作放在接口裡,把屬性放到類中。FirstFirst和LastFirst分別繼承他們。

 



public interface Namer
   ...{
            string GetFirstName();
            string GetLastName();
        }
        public class Name
        ...{
            private string fName;
            private string lName;

            public string FName
            ...{
                get ...{ return fName; }
                set ...{ fName = value; }
            }
     public string LName
            ...{
                get ...{ return lName; }
                set ...{ lName = value; }
            }
        }
        public class FirstFirst : Name, Namer
        ...{
            public FirstFirst(string name)
            ...{
                int i = name.IndexOf(" ");
                if (i > 0)
   ...{
                    FName = name.Substring(0, i).Trim();
                    LName = name.Substring(i + 1).Trim();
                }
                else
                ...{
                    LName = name;
                    FName = "";
                }
            }
            public string GetFirstName()
            ...{
                return FName;
            }
            public string GetLastName()
            ...{
      return LName;
            }
        }
        public class LastFirst : Name, Namer
        ...{
            public LastFirst(string name)
            ...{
                int i = name.IndexOf(",");
                if (i > 0)
                ...{
                    FName = name.Substring(0, i).Trim();
                    LName = name.Substring(i + 1).Trim();
                }
                else
                ...{
              ;      LName = name;
                    FName = "";
                }
            }
            public string GetFirstName()
            ...{
                return FName;
            }
            public string GetLastName()
            ...{
                return LName;
            }
        }
        class INameFactory
        ...{
            public INameFactory()
            ...{ }
            public Namer GetName(string name)
            ...{
                if (name.IndexOf(",") > 0)
                ...{
                    return new LastFirst(name);
                }
                else
                ...{
                    return new FirstFirst(name);
                }
            }
        }

使用如下:



            string name = this.textBox1.Text;
            I簡單工廠.INameFactory iNameFactory = new 簡單工廠.I簡單工廠.INameFactory();
            I簡單工廠.Namer namer = iNameFactory.GetName(name);

            this.textBox2.Text = namer.GetFirstName();
            this.textBox3.Text = namer.GetLastName();
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved