工厂三姐妹
来源:互联网 发布:php推广系统 编辑:程序博客网 时间:2024/04/28 12:08
设计模式中第一个接触的模式就是简单工厂模式,简单工厂也并不简单,相对我们之前面向过程的编程而言,简单工厂模式已经是从面相过程向面向对象的一个飞跃。但是简单工厂也有她的不足,便是她并不符合开放—封闭的原则。紧接着就有了工厂方法模式,工厂方法是对简单工厂的继承与改进,将简单工厂类改进优化成抽象的工厂类与具体的工厂类。抽象工厂模式对工厂方法模式作了更进一步的优化。
1.简单工厂模式
简单工厂解决的就是如何实例化对象的问题,对于一些很容易变化的地方,就可以考虑用一个单独的类来做这个创造实力的过程。
优点:工厂类中包含了必要的逻辑判断,根据客户端的选择动态的实例化相关的类,对于客户端来说去除了与具体产品的依赖。
抽象的语言总是难以理解,下面就通过具体的实例来更深刻的领会简单工厂模式的好处。
用简单工厂模式实现计算器的功能时,各个类的示例图如下:
工厂类的具体实现代码:
public class OperationFactory{public static Operation createOperate(string operate){Operation oper=null;switch(operate){case"+":oper = new OperationAdd();break;case"-":oper = new OperationSub();break;case"*":oper = new OperationMul();break;case"/":oper = new OperationDiv();break;}return oper;}}
通过图示和代码可以看出,如果想要增加或删除某一个运算方法,就必须改变工厂类。
然而正是因为她的优点,也暴露了不足的地方:把逻辑判断放在工厂类中,如果想要再增加、删除、修改逻辑判断,就不得不修改工厂类,这就违背了开放—扩展原则。
2.工厂方法模式
定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类。
通过工厂方法来实现上面计算器的例子:
不难看出,工厂类下面增加了加法、减法等具体的工厂,这样增加新的运算时只需要扩展工厂类就可以。这样也将实例化的过程延迟到了子类。
工厂模式结构图:
3.抽象工厂模式
定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。
结构图:
优点:
1.易于交换产品系列,由于具体工厂类在一个应用中只需要在初始化时出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。
2.它让具体的创建实例过程与客户端分离,客户端通过他们的抽象接口操纵实例,产品的具体类名也被具体工厂的实现分离,不会出现在客户代码中。
- 工厂模式三姐妹
- 比较工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 工厂三姐妹
- 初识工厂三姐妹
- 工厂模式-三姐妹
- 工厂三姐妹
- 设计模式------工厂三姐妹
- 设计模式------工厂三姐妹
- 设计模式-工厂三姐妹
- 设计模式--工厂三姐妹
- Android 获取手机的联系人进行操作
- switch语句使用要注意的两点
- mysql 建数据库并设置为utf-8编码
- 添加ramdsik文件系统支持
- floor函数 与 ceil函数
- 工厂三姐妹
- SVN多项目多仓库管理
- Oracle-视图、同义词
- 编写函数,接受一对指向vector<int>的迭代器和一个int值。在两个迭代器指定的范围内查找给定的值,返回一个布尔值来指出是否找到。
- android上传图片(及普通参数)到服务器(j2ee后台服务器,ssh框架)
- mysql创建存储过程
- JLink Warning: T-bit of XPSR is 0 but should be 1. Changed to 1.
- Linux环境变量的设置
- 利用opencv2.4.10+VS2012和RobHess的sift特征算法实现全景图像拼接