由陈老师想到容易工厂模式
由陈老师想到简单工厂模式
今天学习一下简单工厂模式:
为了通俗易懂,我们以陈老师摄影工作室为例:
首先陈老师摄影工作室,主要的摄影对象是自己女朋友,
而陈老师对自己女朋友也是有要求的,要求当然是做一些那个事情了,为此
我们要首先定义一个陈老师女朋友的接口,如下:
有了老师的女朋友的接口了,只有符合陈老师女朋友接口的人,才能算是陈老师的女朋友,此时,张柏芝登场了,张柏芝首先要答应和陈老师做那个事情,为此,我们定义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多艳照,发现一个,我们就实现一个陈老师女友的接口就可以了。这就是简单工厂模式的好处,易维护,易扩展,可复用。