抽象工厂模式

来源:互联网 发布:苹果电脑mac怎么下游戏 编辑:程序博客网 时间:2024/06/05 22:50

这个阶段在学习抽象工厂模式的时候,自己疑惑了,为什么书上写了简单工厂模式之后还要在写抽象工厂模式呢?他们之间有什么区别呢?

 

其实在书中,我们不难看出简单工厂他其实不能算是一个模式,它违背了软件的开放封闭的原则。例如书上的加减运算的例子中我们就会发现如果还有新的运算的话就需要我们重新在里面加上一个类,并且修改,这样不符合软件修改封闭的原则。

 

虽然简单工厂有缺点,但就像我们人一样,无论是一个什么样的人,他身上总有优点。简单工厂也是。那他的优点是什么呢?

 

想必大家看到这里都禁不住疑惑了,为什么我的题目为抽象工厂模式却说了这么多的简单工厂的有关知识呢?

 

抽象工厂模式,提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。估计大家看到这里就迷糊了。抽象工厂其实是用来处理一系列相似的产品族的模式。抽象工厂模式结构图如下:


抽象工厂最大的好处便是易于交换系列产品系列,此外的好处就是它让具体的创建实例过程和客户端分离,客户端是通过他们的抽象接口操纵实例。

 

事物都有两面性,抽象工厂也不例外。它最适合处理交换产品系列的情况,但这也是它致命的弱点,假如需要临时在具体工厂里面添加一个新的产品,那么所有的工厂类都要进行修改,所以在运用抽象模式的时候,产品的等级划分是很重要的。当然在现实的生活中,我们常常是将抽象工厂模式和简单工厂结合起来运用,这样就可以达到解耦的目的。

 

说到这里,其实二者之间的区别也就慢慢的有所体会了。简单工厂模式多是直接实例化目标类的静态类。比如运动员中有篮球的、跳远的、跳高的等运动员。就直接用一个运动员工厂实例化各种具体的运动员。在举个抽象工厂模式能够解决的问题。比如说电脑和手机安装软件。首先可以抽象出一个电子产品的抽象工厂,接着电脑工厂和手机工厂继承电子产品工厂类,紧接着实例化不同品牌的电脑和手机。简单的说就是,抽象工厂模式:多个抽象产品类,每个抽象产品类可以派生出多个具体产品类。一个抽象工厂类,可以派生出多个具体工厂类。每个具体工厂类可以创建多个具体产品类的实例。

0 0
原创粉丝点击