第3章 工厂方法与抽象工厂.ppt
《第3章 工厂方法与抽象工厂.ppt》由会员分享,可在线阅读,更多相关《第3章 工厂方法与抽象工厂.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、设计模式第三章第三章工厂方法与抽象工厂工厂方法与抽象工厂设计模式回顾q掌握观察者模式传送数据两种方式q使用Java内置包实现观察者模式q学习装饰模式的设计特点q利用模式和原则设计简单应用程序2设计模式目标q掌握工厂方法模式,使用继承把对象的创建封装q掌握抽象工厂模式,使用对象组合进行对象创建封装q比较工厂模式的设计特点q利用模式和原则设计简单应用程序3设计模式“new”的问题q创建对象时,当看到”new”就会想到”具体”已知有一个Pizza店,设计一段订购代码,来满足客户的要求Pizza orderPizza(String type)Pizza pizza;if(type.equals(“ch
2、eese”)pizzza=new CheesePizza();else if(type.equals(“greek”)pizza=new GreekPizza();else if(type.equals(“Veggie”)pizza=new VeggiePizza();pizza.prepare();pizza.bake();pizza.cut();pizza.box();return pizza根据Pizza类型实例化具体类Pizza店往往根据市场销售情况改变Pizza的风味,这段代码可能会随时修改:比如:增加:CowPizza、ClamPizza去掉:GreekPizza如果实例化“某些”
3、具体类,将使orderPizza()出问题。设计原则:修改关闭,扩展开放如何将实例化具体类的代码从应用中抽离或封装起来,使它们不会干扰应用的其它部分4设计模式解决问题qPizza店由orderPizza()方法负责处理订单,但为了能够应付市场变化设计抽象方法 abstract Pizza createPizza(String type);负责创建正确种类Pizzapublic abstract class PizzaStore public Pizza orderPizza(String type)Pizza pizza;pizza=createPizza(type);pizza.prepar
4、e();pizza.bake();pizza.cut();pizza.box();return pizza;public abstract Pizza createPizza(String type);利用抽象方法返回具体实例,让子类去重写这个抽象方法。实际上达到将对象实例化操作延迟到子类进行。将组件从具体类中解藕(decouple)出来。(工厂方法)5设计模式工厂方法模式结构q包含四种角色抽象产品(Product):抽象类或接口,负责定义具体产品必须实现的方法;(Pizza)具体产品(ConcreteProduct):具体产品是Product子类或实现接口方法类;(CheesePizza、V
5、eggiePizza)等构造者(Creator):抽象类或接口,定义一个称为工厂方法的抽象方法,该方法返回具体产品类的实例;PizzaStore具体构造者(ConcreteCreator):是Creator的子类或实现接口方法类,它重写工厂方法使工厂方法返回具体产品的实例。NYPizzaStore(纽约风味)、ChicagoPizzaStore(芝加哥风味)6设计模式举例从化太平和街口各开一家纽约风味NYPizzaStore和芝加哥风味ChicagoPizzaStore,顾客可以根据自己口味喜好在网上订购。所有Pizza按照统一规则:准备prepare、烘烤bake、切片cut、装盒box。假
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 工厂方法与抽象工厂 工厂 方法 抽象
限制150内