设计模式的概念已经在许多人的心里,有着高深莫测的伟大形象,当然国外的几个N人搞出了23个GOF设计模式,咱们就狠下心来学,说不定,某一天,我们CH人也能搞出几个更N的模式,不过重构好象重视的人不多,我建议设计模式和重构,可以交叉迭带里结合学习,毕竟这两本书是当世的惊世之作,好拉,废话少说,先来点简单点的,学习要循序渐进(江舟)
下面举个简单的例子来说明一下简单工厂(不属于23“GOF”)
在外国的名字里,有firstname,lastname之分,比如:MR JORN 或MR,JORN
注意两者之间用空格或“,“分开
那么要对一个完整的名字进行分化,当然有很多简单的方法,我在这里只是举个例子,非小题大作嫌疑
首先构造一个简单Base class
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.Trim().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 partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
NameFactory namefract = new NameFactory();
Namer nm = namefract.getName(this.txtname.Text.Trim());
this.txtfirstname.Text = nm.getFrname();
this.txtlastname.Text = nm.getLname();
}
}
虽然简单,但给入门的,可以说是个很好的引导。。。。。