今天学习一下简单工厂模式:
为了通俗易懂,我们以陈老师摄影工作室为例:
首先陈老师摄影工作室,主要的摄影对象是自己女朋友,
而陈老师对自己女朋友也是有要求的,要求当然是做一些那个事情了,为此
我们要首先定义一个陈老师女朋友的接口,如下:
有了老师的女朋友的接口了,只有符合陈老师女朋友接口的人,才能算是陈老师的女朋友,此时,张柏芝登场了,张柏芝首先要答应和陈老师做那个事情,为此,我们定义ZhangBoZhi的类,并实现女朋友接口,代码如下所示:
陈老师是不会趴在一个女人身上一辈子的,玩腻了,自然是踹掉了,然后另一位符合要求的女友登场了,她是谁呢?恭喜你答对了,是阿娇,阿娇首先也符合了陈老师女友的要求,实现了女友的接口。
代码如下所示:
时间长了,陈老师对阿娇又失去了兴趣,于是找了杨永晴,首先杨永晴也实现了陈老师的女友接口,定义如下:
陈老师既然开摄影工作室,那肯定是积攒了不少照片,不会因为女友分手而把照片还给她们。于是,就有了笔记本坏掉的事件,后来的事情,大家都知道了。
为此,我们定义了一个陈老师摄影工作室的工厂类,专门往外流传艳照,代码如下所示:
此时,我们作为一个小小小网民,想看陈老师女友的艳照,主要向陈老师摄影工作室索取就是了,代码如下所示:
此时,相信大家都看明白了,如果陈老师有N多女友,拍了N多艳照,发现一个,我们就实现一个陈老师女友的接口就可以了。这就是简单工厂模式的好处,易维护,易扩展,可复用。
为了通俗易懂,我们以陈老师摄影工作室为例:
首先陈老师摄影工作室,主要的摄影对象是自己女朋友,
而陈老师对自己女朋友也是有要求的,要求当然是做一些那个事情了,为此
我们要首先定义一个陈老师女朋友的接口,如下:
interface GuanXiGirlFriend
{
void MakeSomeThings();
}
有了老师的女朋友的接口了,只有符合陈老师女朋友接口的人,才能算是陈老师的女朋友,此时,张柏芝登场了,张柏芝首先要答应和陈老师做那个事情,为此,我们定义ZhangBoZhi的类,并实现女朋友接口,代码如下所示:
class ZhangBoZhi:GuanXiGirlFriend
{
public void MakeSomeThings()
{
Console.Write("张柏芝和陈老师在一起的时光里,跟陈老师拍摄了艳照");
}
}
陈老师是不会趴在一个女人身上一辈子的,玩腻了,自然是踹掉了,然后另一位符合要求的女友登场了,她是谁呢?恭喜你答对了,是阿娇,阿娇首先也符合了陈老师女友的要求,实现了女友的接口。
代码如下所示:
class AJiao:GuanXiGirlFriend
{
public void MakeSomeThings()
{
Console.Write("阿娇和陈老师在一起的时光里,跟陈老师拍摄了艳照,事后说出了很傻很天真");
}
}
时间长了,陈老师对阿娇又失去了兴趣,于是找了杨永晴,首先杨永晴也实现了陈老师的女友接口,定义如下:
class YanYongQing : GuanXiGirlFriend
{
public void MakeSomeThings()
{
Console.Write("杨永晴和陈老师在一起的时光里,跟陈老师拍摄了艳照,但是事后一直在一起,也没有分手");
}
}
陈老师既然开摄影工作室,那肯定是积攒了不少照片,不会因为女友分手而把照片还给她们。于是,就有了笔记本坏掉的事件,后来的事情,大家都知道了。
为此,我们定义了一个陈老师摄影工作室的工厂类,专门往外流传艳照,代码如下所示:
class GuanXiSheYingFactory
{
public static GuanXiGirlFriend createGuanXiGirlFriend(string strName)
{
GuanXiGirlFriend girlFriend = null;
switch (strName)
{
case "张柏芝":
girlFriend = new ZhangBoZhi();
break;
case "阿娇":
girlFriend = new AJiao();
break;
default:
girlFriend = new YanYongQing();
break;
}
return girlFriend;
}
}
此时,我们作为一个小小小网民,想看陈老师女友的艳照,主要向陈老师摄影工作室索取就是了,代码如下所示:
class Program
{
static void Main(string[] args)
{
GuanXiGirlFriend girlFriend = null;
girlFriend = GuanXiSheYingFactory.createGuanXiGirlFriend("张柏芝");
girlFriend.MakeSomeThings();
}
}
此时,相信大家都看明白了,如果陈老师有N多女友,拍了N多艳照,发现一个,我们就实现一个陈老师女友的接口就可以了。这就是简单工厂模式的好处,易维护,易扩展,可复用。