策略模式和建造者模式
2011-07-03 19:20
176 查看
最近在读程杰老师的《大话设计模式》,个人感觉是绝佳的设计模式入门学习必备资料,它通过生动简洁的例子能让你迅速了解各个模式。今天学习Builder模式时,突然发现Builder模式和Strategy模式的类图非常相似。因此写下本文用于比较两个模式,深化对两个模式的认识。
先来看创建者模式的类图
再来看一下策略模式的类图
通过比较两者的类图,发现两者还是很相似的,都有一个抽象类,然后是具体实现类,最后是一个第三方类来组织和维护抽象类。不同的是创建者类还有一个产品类。
但是从功能上来说两者相差很远:
(1)建造者模式是创建型的,也就是说用来创建对象的,而策略模式属于行为型模式,通过将行为封装成对象来降低类之间的耦合度;
(2)策略模式的抽象类仅仅定义了一个算法接口,而建造者模式的抽象类则已经定义好了算法骨架或者过程的步骤,也就是说策略模式的各具体策略在实现上可以差之千里,但是建造者模式的具体建造者必须按照接口中定义好的骨架或步骤去实现;
(3)策略模式的StrategyContext类通过提供一个上下文环境来维护具体策略;而建造者模式的Director类则是封装了Product类的创建细节,便于客户端程序调用。
先来看创建者模式的类图
再来看一下策略模式的类图
通过比较两者的类图,发现两者还是很相似的,都有一个抽象类,然后是具体实现类,最后是一个第三方类来组织和维护抽象类。不同的是创建者类还有一个产品类。
但是从功能上来说两者相差很远:
(1)建造者模式是创建型的,也就是说用来创建对象的,而策略模式属于行为型模式,通过将行为封装成对象来降低类之间的耦合度;
(2)策略模式的抽象类仅仅定义了一个算法接口,而建造者模式的抽象类则已经定义好了算法骨架或者过程的步骤,也就是说策略模式的各具体策略在实现上可以差之千里,但是建造者模式的具体建造者必须按照接口中定义好的骨架或步骤去实现;
(3)策略模式的StrategyContext类通过提供一个上下文环境来维护具体策略;而建造者模式的Director类则是封装了Product类的创建细节,便于客户端程序调用。
相关文章推荐
- 运用单例模式、建造者模式和策略模式实现异步加载Android联系人资料
- Android 设计模式之(二)建造者,模板方法,策略模式
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- 策略模式
- PHP设计模式-建造者模式
- 【原】iOS设计模式之:建造者模式Builder Pattern,用于改进初始化参数
- 策略模式
- 设计模式—策略模式
- 【java设计模式】之 策略(strategy)模式
- JAVA设计模式-策略模式应用实例
- 极速理解设计模式系列:8.策略模式(Strategy Pattern)
- 设计模式-策略模式
- JAVA设计模式-策略模式应用实例
- 设计模式—策略模式
- 与策略模式工厂工作方式之间的差
- 策略模式,简单工厂模式结合
- C++实现策略(Strategy)模式
- 乐在其中设计模式(C#) - 策略模式(Strategy Pattern)
- 设计模式学习笔记(一):策略模式
- Java设计模式-建造者模式