设计模式 学习笔记(4)工厂方法模式、原型模式、模板方法模式
2013-05-30 10:36
543 查看
(8)工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
简单工厂模式与工厂方法模式的区别。简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是我们在增加一个功能时,需要给运算的工厂类方法里加“case”的分之条件,修改原有的类就违背了开发-封闭原则。这时就由工厂方法模式来解决,但工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,也就是原来是要修改工厂类的,而现在是修改客户端。
工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。
View Code
模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。
简单工厂模式与工厂方法模式的区别。简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是我们在增加一个功能时,需要给运算的工厂类方法里加“case”的分之条件,修改原有的类就违背了开发-封闭原则。这时就由工厂方法模式来解决,但工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行,也就是原来是要修改工厂类的,而现在是修改客户端。
工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。
static void Main(stringp[] args) { AbstractClass c; c=new ConcreteClassA(); c.TemplateMethod(); c=new ConcreteClassB(); c.TemplateMedthod(); Console.Read(); }
View Code
模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。
相关文章推荐
- 设计模式学习笔记(十六)——Template Method模板方法模式
- 模板方法设计模式--学习笔记
- 设计模式学习笔记十三:模板方法模式
- 【学习笔记javascript设计模式与开发实践(模板方法模式)----11】
- 设计模式学习笔记十三:模板方法模式
- 设计模式学习笔记-模板方法
- 设计模式学习笔记——模板方法模式
- [学习笔记]Java模板方法和单例设计模式
- 【设计模式学习笔记二十四】【行为模式】【模板方法(Template Method)】
- java学习笔记-设计模式15(模板方法模式)
- HeadFirst 设计模式学习笔记8--模板方法模式
- 设计模式学习笔记——Template Method模板方法模式
- java/android 设计模式学习笔记(22)---模板方法模式
- 设计模式学习笔记-模板方法模式
- 《Head First 设计模式》学习笔记:模板方法模式
- 设计模式学习笔记(十六)——Template Method模板方法模式
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- [学习笔记]Java模板方法和单例设计模式
- 设计模式C++学习笔记之九(Template Method模板方法模式)
- 设计模式C++学习笔记之九(Template Method模板方法模式)