UML设计模式 9 设计模式(3)--Factory,Singleton模式
24页1、9 设计模式(3) Factory 、 Singleton模式,权 巍,主要内容,9.1 工厂模式(Factory)9.1.1简单工厂9.1.2工厂方法9.1.3抽象工厂9.2 单例模式( Singleton )9.3 里氏代换原则,2,UML和设计模式,9.1 工厂模式-创建型模式,创建型模式(Creational Pattern)是对类的实例化过程的抽象化。一些系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建型模式描述了怎样构造和封装这些动态的决定。创建型模式分为类的创建型模式和对象的创建型模式。,3,UML和设计模式,9.1.1 简单工厂模式,创建对象问题:不能应对“具体实例化类型”的变化。 开闭原则(对扩展开放、对修改封闭)解决思路:封装变化点哪里变化,封装哪里,常规方法创建对象: Road road=new Road(); Road sandroad=new sandRoad();,4,UML和设计模式,9.1.1 简单工厂模式,一个农场的例子,5,UML和设计模式,简单工厂模式(静态工厂方法模式),就是一个工厂类根据传入的参数决定
2、创建出哪一种产品类的实例。,6,UML和设计模式,简单工厂模式的三个角色:工厂类角色模式的核心,负责根据传入的参数决定创建出哪种具体产品类的对象,通常为具体类。抽象产品由模式所创建的对象的父类,或它们共同拥有的接口担任,可为抽象类或接口。具体产品模式所创建的任何对象都是这个角色的实例,为具体类。,7,UML和设计模式,示例代码(简单工厂):,/抽象产品(接口或抽象类)interface Road /具体产品Class railRoad extends Road Class sandRoad extends Road /具体工厂: 是核心,负责创建具体产品class RoadFactory public static Road CreateRoad(String name) /根据不同的情况(如名字等)创建不同的产品 return new railRoad(); ,/ 创建一个Road 对象Road road= RoadFactory.CreateRoad(“railroad”);,客户程序:,8,UML和设计模式,简单工厂模式的优点:设计简单,产品类的等级结构不会反映到工厂类中,从而产
3、品类等级结构的变化也就不会影响到工厂类。由工厂类决定何时创建何种产品类的对象,免除了客户端创建产品类对象的责任。 缺点:静态:增加新的产品(如WaterRoad)时,要修改工厂类,违反了面向对象设计的基本原则。工厂类负责创建所有产品,一旦不能正常工作,整个程序都会受到影响。,9,UML和设计模式,9.1.2工厂方法模式(多态性工厂模式),问题:需要频繁增加新的对象解决:封装变化点 (抽象的工厂),10,UML和设计模式,在工厂方法模式中,核心的工厂类不再负责所有的产品的创建,而是将具体创建的工作交给子类去做,即本模式中包含:抽象工厂、具体工厂。抽象工厂:负责给出具体工厂类必须实现的接口。具体工厂:实现抽象工厂接口,用于创建具体的 产品实例。抽象产品具体产品,(2)工厂方法模式(多态性工厂模式),11,UML和设计模式,农场例子-工厂方法模式,UML和设计模式,12,/抽象产品(接口或抽象类)interface Road /具体产品class railRoad implements Road class sandRoad implements Road /抽象工厂(稳定不变)interf
《UML设计模式 9 设计模式(3)--Factory,Singleton模式》由会员油条分享,可在线阅读,更多相关《UML设计模式 9 设计模式(3)--Factory,Singleton模式》请在金锄头文库上搜索。
最新学校新冠肺炎疫情突发事件应急处置办法和流程
最新疫情防控期间学校用餐与食堂管理规定和师生一日流程图
最新Xx省xx区返学师生员工健康登记表
诊所简介
高中英语-第二单元-《the-United-Kingdom》课件-新必修5
新版新目标英语七年级下unit4--Don't-eat-in-class课件
新版PEP六年级英语unit6-how-do-you-feel-A-Let's-talk
安徽专版2018秋八年级英语上册Unit5Doyouwanttowatchagameshow第6课时习题课件新人教目标版
酸的和甜的教学课件.doc
Lesson-1-Where-do-we-go-from-here概要
Docker技术与实践
七年级英语下册-Unit-9-What-does-he-look-like(第3课时)(Grammar-Focus-3d)同步语法精讲精练课件-(新版
《I'm-going-to-do-the-high-jump》PPT课件3
高二英语外研版-必修5-Module-2-A-Job-Worth-Doing-Reading课件
英语片段教学-I-can-do-it
Adobe公司简介
安徽专版2018秋八年级英语上册Unit5Doyouwanttowatchagameshow第2课时习题课件新人教目标版
第二单元全课件Unit2-What-time-do-you-go-to-school-全课件
第18课-Windows的磁盘管理与安全
第12章--Windows-Server-2008路由及远程访问
2024-04-08 20页
2024-04-06 36页
2024-02-09 36页
2024-01-31 31页
2024-01-28 18页
2024-01-28 31页
2024-01-28 24页
2024-01-28 27页
2024-01-28 24页
2024-01-28 25页