由陈老师想到简单工厂模式

今天学习一下简单工厂模式:
为了通俗易懂,我们以陈老师摄影工作室为例:
首先陈老师摄影工作室,主要的摄影对象是自己女朋友,
而陈老师对自己女朋友也是有要求的,要求当然是做一些那个事情了,为此
我们要首先定义一个陈老师女朋友的接口,如下:

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多艳照,发现一个,我们就实现一个陈老师女友的接口就可以了。这就是简单工厂模式的好处,易维护,易扩展,可复用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值