今天开始正式的学习设计模式了,有人说学习设计模式如果不编几万行代码是摸不到头脑的,以前也学习,也总是不得要领,现在感觉对OO有些理解了,也在没有学设计模式的时候用了适配器,抽象工厂等少数几个模式.
手头纸面的书关于设计模式的仅有两本:<<Gof的设计模式>>,<<C#设计模式>>,我打的例子代码都是这个书中的,说实话,这本书很烂,当时买来也主要是打算只是通过看这本书对设计模式有个总体印象.
声明一下,随笔只作为我的学习记录,言论未必正确.
简单工厂模式不属于Gof中归纳的23个模式,但是可以作为其它工厂模式的引例,其思想很简单,只是通过传递的参数来实例化具体的类,具体的类继承统一的基类,而调用者则可以不用管具体实例化的哪个类,只要使用这个基类就可以了.
下面这个例子实在恶心,不过作为练习足够了.

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 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.Trim().IndexOf(",");
if (i > 0)
{
lName = name.Substring(0, i).Trim();
frName = name.Substring(i + 1).Trim();
}
else
{
lName = name;
frName = "";
}
}
}
调用时候的代码:
手头纸面的书关于设计模式的仅有两本:<<Gof的设计模式>>,<<C#设计模式>>,我打的例子代码都是这个书中的,说实话,这本书很烂,当时买来也主要是打算只是通过看这本书对设计模式有个总体印象.
声明一下,随笔只作为我的学习记录,言论未必正确.
简单工厂模式不属于Gof中归纳的23个模式,但是可以作为其它工厂模式的引例,其思想很简单,只是通过传递的参数来实例化具体的类,具体的类继承统一的基类,而调用者则可以不用管具体实例化的哪个类,只要使用这个基类就可以了.
下面这个例子实在恶心,不过作为练习足够了.
调用时候的代码:
//实际的项目中,这里应该使用单件模式
NameFactory nameFact = new NameFactory();
Namer nm = nameFact.getName(this.textBox1.Text);
textBox2.Text = nm.getFrname();
textBox3.Text = nm.getLname();
NameFactory nameFact = new NameFactory();
Namer nm = nameFact.getName(this.textBox1.Text);
textBox2.Text = nm.getFrname();
textBox3.Text = nm.getLname();