chap07-1设计模式补充.ppt

chap07-1设计模式补充

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -*- 无法对修改关闭! Pizza orderPizza(String type){ Pizza pizza; if(type.equal(“cheese”) pizza = new CheesePizza(); else if(type.equal(“greek”) pizza = new GreekPizza(); else if(type.equal(“clam”)) pizza = new CalmPizza(); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } 这是不变部分 这是变化部分 无法对修改关闭! -*- 抽取创建匹萨的代码 Pizza orderPizza(String type){ Pizza pizza; pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } if(type.equal(“cheese”) pizza = new CheesePizza(); else if(type.equal(“greek”) pizza = new GreekPizza(); else if(type.equal(“clam”)) pizza = new CalmPizza(); -*- 封装创建匹萨的代码 public class SimplePizzaFactory{ public Pizza createPizza(String type){ Pizza pizza = NULL; if(type.equal(“cheese”) pizza = new CheesePizza(); else if(type.equal(“greek”) pizza = new GreekPizza(); else if(type.equal(“clam”)) pizza = new CalmPizza(); return pizza; } } 封装创建匹萨的过程,变化时只需要修改该简单工厂 -*- 重整匹萨店PizzaStore public class PizzaStore{ SimplePizzaFactory factory; public PizzaStroe(SimplePizzaFactory f){ this.factory=f; } public Pizza orderPizza(String type){ Pizza pizza; pizza = factory.createPizza(type); pizza.prepare(); pizza.bake(); pizza.cut(); pizza.box(); return pizza; } } -*- 重整匹萨店PizzaStore -*- 加盟匹萨店 希望在不同地方开设分店 加盟店根据区域特点,需要提供不同风味的匹萨,但需要控制匹萨的制作过程 创建不同区域的各自的匹萨工厂 NYPizzaFactory nyFactory=new NYPizzaFactory(); PizzaStore nyStore=new PizzaStroe(nyFactory); nyStore.orderPizza(“Veggie”); 不同的工厂,除了改变风味外,可能也会改变制作流程! -*- 给匹萨店设置框架 public abstract class PizzaStore{ public Pizza orderPizza(String type){

文档评论(0)

1亿VIP精品文档

相关文档