您的位置:首页 > 其它

细说设计模式之-让你看得懂的工厂模式系列

2015-02-03 18:34 253 查看
今天跟大家分享一下我对工厂系列模式的理解,主要包括简单工厂、工厂方法、抽象工厂模式。

场景一:
话说苹果和小米是两大手机巨头,他们各自推出的经典手机是IPhone手机系列和小米手机系列。
两家公司在手机的整个开发过程当中,都只负责产品的研发和设计工作,而手机制造则委托给手机工厂。

设计模式中有一个叫面向抽象编程的原则,在程序中体现为使用接口或者抽象类。下面我们将苹果和小米手机的共同特征和
行为来做一个抽象,这里我们使用抽象类,如下:

MobilePhone.cs

class Program
{
static void Main(string[] args)
{
//小米生产线
IProductLineFactory xiaomiProductLine = new XiaoMiProductLineFactory();
xiaomiProductLine.CreateMobilePhone().Show(); //生产小米手机
xiaomiProductLine.CreatePad().Show();//生产小米平板

Console.WriteLine();

IProductLineFactory appleProductLine = new AppleProductLineFactory();
appleProductLine.CreateMobilePhone().Show(); //生产苹果手机
appleProductLine.CreatePad().Show();//生产苹果平板

Console.ReadKey();
}


View Code
总结:抽象工厂创建的往往是一到多个不同类型的实例,而不是某一个类型的实例。它将对象创建的思想由点到面进行延伸,体现的是一种具体到抽象的思维过程,
所以由此而得名抽象工厂(非官方解释,个人理解而已)
优点:工厂方法模式虽符合了开闭原则,但每个类的对象需要一个对应的工厂,当我们需要创建多种不同类型对象时那么工厂方法类数量就会剧增。
所以,抽象工厂提出了产品族的概念,即相互关联的一类产品创建可以合并到一个实际工厂中的多个方法来创建,避免工厂类数量的爆炸。
缺点:当然,抽象工厂仍存在对客户端调用繁琐的问题,这里也可以和工厂方法一样来借助简单工厂简化调用,具体请参考工厂方法与简单工厂结合代码。

结语:工厂系列中的三大模式是紧密联系的,简单工厂->工厂方法->抽象工厂中的后一种设计模式都是对前一种模式缺陷的改造升级。

当然这里所说的缺陷也要辩证的来对待,在文中有提及,切不可一概而论。如果你觉得我的文章对你有点启迪,那么我的小伙伴不要吝啬给个赞吧。

猛击此处,获取代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐