工厂方法模式——Head First Design Patterns
2013-04-01 23:25
274 查看
定义:定义一个用于创建对象的接口,让子类决定初始化哪一个具体的类。工厂方法把具体类的实例化推迟到子类。
使用场景: 1)当类的某个属性需要不同的实例化对象时;2)当不知道类的某个属性会有多少不同的实例化对象时
类图:
代码样例:
优点:1)当需要不同的具体Product实现时,不会对Creator造成影响;
缺点:
类似的设计模式:
见模板方法设计模式
配套的内功心法:1)依赖反转原则,依赖抽象类,而不是具体的实现。这个原则和面向接口编程的原则很相似,但是依赖反转原则强调的是高层次类应该摆脱对低层次类的依赖。比如A调用了B,A就是高层次类,看上去就是A依赖于B,但是如果A中定义的是B的接口或者抽象类,就能摆脱对B的依赖了。
使用场景: 1)当类的某个属性需要不同的实例化对象时;2)当不知道类的某个属性会有多少不同的实例化对象时
类图:
代码样例:
public abstract class PizzaStore { abstract Pizza createPizza(String item); public Pizza orderPizza(String type) { Pizza pizza = createPizza(type); System.out.println("--- Making a " + pizza.getName() + " ---"); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } }
public class ChicagoPizzaStore extends PizzaStore { Pizza createPizza(String item) { if (item.equals("cheese")) { return new ChicagoStyleCheesePizza(); } else if (item.equals("veggie")) { return new ChicagoStyleVeggiePizza(); } else if (item.equals("clam")) { return new ChicagoStyleClamPizza(); } else if (item.equals("pepperoni")) { return new ChicagoStylePepperoniPizza(); } else return null; } }
优点:1)当需要不同的具体Product实现时,不会对Creator造成影响;
缺点:
类似的设计模式:
见模板方法设计模式
配套的内功心法:1)依赖反转原则,依赖抽象类,而不是具体的实现。这个原则和面向接口编程的原则很相似,但是依赖反转原则强调的是高层次类应该摆脱对低层次类的依赖。比如A调用了B,A就是高层次类,看上去就是A依赖于B,但是如果A中定义的是B的接口或者抽象类,就能摆脱对B的依赖了。
相关文章推荐
- 学什么——Head First Design Patterns
- Head First Design Patterns
- book report:Head First Design Patterns
- 通告:即日起停止翻译《Head First Design Patterns》
- 《Head First Design Patterns》读书笔记之状态模式
- 《Head First Design Patterns》笔记五:单件模式(Singleton Pattern)
- 简介——Head First Design Patterns
- Head First Design Patterns
- head first design patterns这本书值得一读!
- head first design patterns(2)
- Head First Design Patterns 深入淺出設計模式
- 《Head First design patterns》读书笔记
- 《Head First Design Patterns》笔记三:装饰者模式(Decorator Pattern)
- 《Head First Design Patterns》笔记十二:状态模式(State Pattern)
- 《Head First Design Patterns》笔记十三:代理模式(Proxy Pattern)
- Head First Design Patterns 阅读笔记之八: the Template Method Pattern
- Head First Design Patterns - Decorator Pattern
- 观察者模式——Head First Design Patterns
- 单例模式——Head First Design Patterns
- Head First Design Patterns 阅读笔记之二: Observer Pattern