根据提供给它的数据,返回几个可能类中的一个类的实例. 通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化.
namespace
NameFactory
...
{ public class Namer // 父类 ... { protected string frName, lName; public string getFrname() ... { return frName; } public string getLname() ... { return lName; } } public class FirstFirst : Namer // 子类 ... { public FirstFirst( string name) ... { int i = name.IndexOf ( " " ); if (i > 0 ) ... { frName = name.Substring ( 0 , i).Trim (); lName = name.Substring (i + 1 ).Trim (); } else ... { lName = name; frName = "" ; } } } public class LastFirst : Namer // 子类 ... { public LastFirst( string name) ... { int i = name.IndexOf ( " , " ); if (i > 0 ) ... { lName = name.Substring ( 0 , i); frName = name.Substring (i + 1 ).Trim (); } else ... { lName = name; frName = "" ; } } } public class NameFactory // 简单工厂类 ... { public NameFactory() ... {} public Namer getName( string name) ... { int i = name.IndexOf ( " , " ); if (i > 0 ) return new LastFirst (name); else return new FirstFirst (name); } }// 功能:输入名字","与" "取出名字 public class Form1 : System.Windows.Forms.Form ... { private System.Windows.Forms.Button btCompute; private System.Windows.Forms.TextBox txFirst; private NameFactory nameFact; private System.Windows.Forms.TextBox txName; private System.Windows.Forms.TextBox txLast; private void init() ... { nameFact = new NameFactory (); } private void btCompute_Click( object sender, System.EventArgs e) ... { Namer nm = nameFact.getName (txName.Text ); txFirst.Text = nm.getFrname (); txLast.Text = nm.getLname (); } } }