简单工厂模式与策略模式
来源:互联网 发布:java linkedlist sort 编辑:程序博客网 时间:2024/05/16 07:09
刚刚接触设计模式时,感觉简单工厂与策略模式非常像。都有一个支持所有算法的接口,一个公共父类和若干个具体实现的类。那么它们之间的区别在什么地方呢?
一:从uml图来看
简单工厂:
策略模式:
从uml图上来看,主要区别体现在类D与类A的关系上。简单工厂中体现为依赖关系,策略模式中体现为聚合关系。
二算法接口
简单工厂:
public class D{ public A createD() { A c=null; switch() { case c= new B() case c=new C() } }}
策略模式:
class D{ private A c public D(A c) { this.c=c }}
分析:简单工厂的代码上来看,D与A表现为依赖关系,因此在D类中使用A的对象作为方法的参数。随后在D中进行逻辑判断。将复杂的逻辑判断封装在类中,简化了客户端的代码既是简单工厂模式的优点也是它的缺点。每当增加一个新的算法,D类都必须重新写,这样就违反了开放—封闭原则。从策略模式的代码来看,D与A的关系是聚合。因此,在D类中既使用了A的对象作为属性,又在构造函数中实现了对于属性的赋值。但是在D类中并没有逻辑判断的语句,这样就把压力施加到了客户端上。
三客户端代码
简单工厂模式
A c;c=D.createD();
策略模式
D c=null;switch(){ case c=D(B) case c=D(C)}
分析:区别有三。1策略模式中有逻辑判断,而简单工厂模式没有。2在简单工厂模式中牵涉到了两个类,在策略模式中只有一个类。不管增加多少功能,客户端始终只和C类保持联系,因此策略模式封装了变化3简单工厂模式使用了D类的方法,而策略模式使用了D类的构造函数。
- 简单工厂与策略模式
- 简单工厂与策略模式
- 策略模式与简单工厂模式
- 简单工厂模式与策略模式
- 策略模式与简单工厂模式
- 策略模式与简单工厂模式
- 设计模式:简单工厂与策略模式
- 简单工厂模式、策略模式与工厂方法模式
- 策略模式:策略模式与简单工厂模式的异同
- 策略+简单工厂模式
- 策略模式+简单工厂
- 简单工厂与策略模式的区别
- 简单工厂与策略模式的结合
- 策略模式与简单工厂结合
- 简单工厂模式 & 策略模式
- 简单工厂模式&策略模式
- 策略模式 + 简单工厂模式
- 简单工厂模式 & 策略模式
- LZW数据压缩算法的原理分析
- 直方图计算
- ASP.NET Web.config文件
- 模仿新浪微博界面设计
- 惊艳死人的古风短句,读一遍,感叹一生一世!
- 简单工厂模式与策略模式
- STL优先队列的使用方法
- 关闭office word时,总是弹出“是否保存对powerword.dot的更改 的解决办法
- android51_activityManager
- ACM竞赛常用STL(二)之STL--algorithm
- python学习:异常处理、with用法以及utf8中文显示
- 博士生传给硕士生的经验
- USACO Riding the Fences 解题报告
- 暂无