您的位置:首页 > 其它

工厂方法模式——Head First Design Patterns

2013-04-01 23:25 274 查看
定义:定义一个用于创建对象的接口,让子类决定初始化哪一个具体的类。工厂方法把具体类的实例化推迟到子类。

 

使用场景: 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的依赖了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: