UML设计模式 9 设计模式(3)--Factory,Singleton模式.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《UML设计模式 9 设计模式(3)--Factory,Singleton模式.ppt》由会员分享,可在线阅读,更多相关《UML设计模式 9 设计模式(3)--Factory,Singleton模式.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、9 设计模式设计模式(3)Factory、Singleton模式模式权权 巍巍主要内容9.1 工厂模式(工厂模式(Factory)9.1.1简单工厂简单工厂9.1.2工厂方法工厂方法9.1.3抽象工厂抽象工厂9.2 单例模式(单例模式(Singleton)9.3 里氏代换原则里氏代换原则2UML和设计模式9.1 工厂模式工厂模式-创建型模式创建型模式创建型模式(创建型模式(Creational Creational PatternPattern)是对类的实例化过程的抽象化。一些系统在创是对类的实例化过程的抽象化。一些系统在创建对象时,需要动态地决定怎样创建对象,创建建对象时,需要动态地决定怎样
2、创建对象,创建哪些对象,以及如何组合和表示这些对象。创建哪些对象,以及如何组合和表示这些对象。创建型模式描述了怎样构造和封装这些动态的决定。型模式描述了怎样构造和封装这些动态的决定。创建型模式分为类的创建型模式和对象的创建创建型模式分为类的创建型模式和对象的创建型模式。型模式。3UML和设计模式9.1.1 简单工厂模式简单工厂模式创建对象创建对象问题:不能应对问题:不能应对“具体实例化类型具体实例化类型”的变化。的变化。开闭原则(对扩展开放、对修改封闭)开闭原则(对扩展开放、对修改封闭)解决思路:封装变化点解决思路:封装变化点哪里变化,封装哪里哪里变化,封装哪里 常规方法创建对象:常规方法创建
3、对象:Road road=new Road();Road sandroad=new sandRoad();4UML和设计模式9.1.1 简单工厂模式简单工厂模式一个农场的例子一个农场的例子5UML和设计模式简单工厂模式(静态工厂方法模式)简单工厂模式(静态工厂方法模式)就是一个工厂类根据传入的参数决定创建出哪一种产就是一个工厂类根据传入的参数决定创建出哪一种产品类的实例。品类的实例。6UML和设计模式简单工厂模式的三个角色:简单工厂模式的三个角色:工厂类角色工厂类角色模式的核心,负责根据传入的参数决定创建出哪种模式的核心,负责根据传入的参数决定创建出哪种具体产品类的对象,通常为具体类。具体产品
4、类的对象,通常为具体类。抽象产品抽象产品由模式所创建的对象的父类,或它们共同拥有的接由模式所创建的对象的父类,或它们共同拥有的接口担任,可为抽象类或接口。口担任,可为抽象类或接口。具体产品具体产品模式所创建的任何对象都是这个角色的实例,为具模式所创建的任何对象都是这个角色的实例,为具体类。体类。7UML和设计模式示例代码(简单工厂):示例代码(简单工厂):/抽象产品(接口或抽象类)抽象产品(接口或抽象类)interface Road /具体产品具体产品Class railRoad extends Road Class sandRoad extends Road /具体工厂具体工厂:是核心,负责
5、创建具体产品是核心,负责创建具体产品class RoadFactory public static Road CreateRoad(String name)/根据不同的情况根据不同的情况(如名字等如名字等)创建不同的产品创建不同的产品 return new railRoad();/创建一个创建一个Road 对象对象Road road=RoadFactory.CreateRoad(“railroad”);客户程序:客户程序:8UML和设计模式p简单工厂模式的优点:简单工厂模式的优点:设计简单,产品类的等级结构不会反映到工厂类中,设计简单,产品类的等级结构不会反映到工厂类中,从而产品类等级结构的变
6、化也就不会影响到工厂类。从而产品类等级结构的变化也就不会影响到工厂类。由工厂类决定何时创建何种产品类的对象,免除了由工厂类决定何时创建何种产品类的对象,免除了客户端创建产品类对象的责任。客户端创建产品类对象的责任。p缺点:缺点:静态:增加新的产品静态:增加新的产品(如如WaterRoad)WaterRoad)时,要修改工厂时,要修改工厂类,违反了面向对象设计的基本原则。类,违反了面向对象设计的基本原则。工厂类负责创建所有产品,一旦不能正常工作,整工厂类负责创建所有产品,一旦不能正常工作,整个程序都会受到影响。个程序都会受到影响。9UML和设计模式9.1.2工厂方法模式(多态性工厂模式)工厂方法
7、模式(多态性工厂模式)问题:需要频繁增加新的对象问题:需要频繁增加新的对象解决:封装变化点解决:封装变化点 (抽象的工厂)(抽象的工厂)10UML和设计模式 在工厂方法模式中,核心的工厂类不再负责所有在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去的产品的创建,而是将具体创建的工作交给子类去做,即本模式中包含:抽象工厂、具体工厂。做,即本模式中包含:抽象工厂、具体工厂。抽象工厂抽象工厂:负责给出具体工厂类必须实现的接口。:负责给出具体工厂类必须实现的接口。具体工厂具体工厂:实现抽象工厂接口,用于创建具体的:实现抽象工厂接口,用于创建具体的 产品实例。产品实
8、例。抽象产品抽象产品具体产品具体产品(2)工厂方法模式(多态性工厂模式)工厂方法模式(多态性工厂模式)11UML和设计模式农场例子-工厂方法模式UML和设计模式12/抽象产品(接口或抽象类)抽象产品(接口或抽象类)interface Road /具体产品具体产品class railRoad implements Road class sandRoad implements Road /抽象工厂(稳定不变)抽象工厂(稳定不变)interface RoadFactory public abstract Road CreateRoad();/railRoad、sandRoad等对象的具体工厂等对象的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- UML设计模式 设计模式3-Factory Singleton模式 UML 设计 模式 Factory Singleton
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内