根据提供给它的数据,返回几个可能类中的一个类的实例.
通常它返回的类都有一个共同的父类和共同的方法,但每个方法执行的任务不同,而且根据不同的数据进行了优化.
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 ();
}
}
}
... {
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 ();
}
}
}