您的位置:首页 > 其它

Head First -- 工厂方法

2013-01-04 00:00 477 查看
定义:
工厂方法模式:定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。



主要示例代码:



public abstract class PizzaStore { public Pizza orderPizza(String type){ Pizza pizza = createPizza(type); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } abstract Pizza createPizza(String type); } public abstract class Pizza { String name; String dough; String sauce; void prepare(){ System.out.println("prepare pizza"); } void bake(){ System.out.println("bake pizza"); } void cut(){ System.out.println("cut pizza"); } void box(){ System.out.println("box pizza"); } } public class NYStylePizzaStore extends PizzaStore{ public Pizza createPizza(String type) { Pizza pizza = null; if(type.equals("cheese")){ pizza = new NYStyleCheesePizza(); }else if(type.equals("veggie")){ pizza = new NYStyleVeggiePizza(); } else if(type.equals("clam")){ pizza = new NYStyleClamPizza(); } return pizza; }


优点:
它能够帮助我们将产品的"实现"从"使用"中解耦。如果增加产品或者改变产品的实现,Creator并不会受到影响(因为Creator与任何具体产品之间都不是紧耦合)。
将创建对象的代码集中在一个对象或者方法中,可以避免代码中的重复,并且方便日后的维护。这也意味着客户在实例化对象时,只会依赖于接口,而不是具体的实现类。这可以帮助我们针对接口编程,而不是针对实现。这让代码更具有弹性,更好的应对未来的扩展。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息