电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

UML设计模式 9 设计模式(3)--Factory,Singleton模式

24页
  • 卖家[上传人]:油条
  • 文档编号:1220833
  • 上传时间:2017-06-03
  • 文档格式:PPT
  • 文档大小:1.28MB
  • / 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

      4、ace RoadFactory public abstract Road CreateRoad();/railRoad、 sandRoad等对象的具体工厂class railRoadFactory implements RoadFactory public Road CreateRoad() return new railRoad(); class sandRoadFactory implements RoadFactory public Road CreateRoad() return new sandRoad(); ,工厂方法模式代码实例,class waterRoad implements Road ,class waterRoadFactory implements RoadFactory public Road CreateRoad() return new waterRoad(); ,13,UML和设计模式,/ 客户端程序:依赖抽象工厂、抽象产品class Client public static void main(String args) RoadFactory rf1

      5、,rf2; Road road1,road2, road3; /实例化2个railRoad对象 rf1 = new railRoadFactory(); road1= rf1.CreateRoad(); /稳定不变 road2= rf1.CreateRoad(); /实例化1个sandRoad对象 rf2 = new sandRoadFactory(); road3= rf2.CreateRoad(); ,14,UML和设计模式,9.1.3 抽象工厂模式,问题:经常需要创建一个新的系列,即产品族。产品族(Product Family):是指功能相关联的产品组成的家族。每个产品族包含相互依赖的对象,这些对象稳定不变。抽象工厂模式的意图:向客户提供一个接口,使得客户可以在不必指定产品的具体类型的情况下,创建多个产品族中的产品对象。,15,UML和设计模式,抽象工厂模式类图结构,ProductA3,ProductB3,16,UML和设计模式,抽象工厂:负责给出具体工厂类必须实现的接口,是模式的核心,与应用系统的逻辑无关。具体工厂:实现抽象工厂接口,直接在客户端的调用下创建产品实例。这个角色含

      6、有选择合适的产品对象的逻辑,与应用系统的逻辑紧密相关。抽象产品:具体产品:,抽象工厂模式的角色,17,UML和设计模式,(3)抽象工厂模式,代码实例:抽象工厂: FacilityFactory具体工厂(对应产品族): IceFacilityFactory、 DesertFacilityFactory。抽象产品: Road、 Building、 Tunnel具体产品: IceRoad、DesertRoad、IceBuilding、 DesertBuilding、IceSky、DesertSky,18,UML和设计模式,农场例子抽象工厂模式,UML和设计模式,19,9.2 单例模式( Singleton ),UML和设计模式,20,单例模式的特点单例类只能有一个实例;单例类必须自己创建自己的这个唯一的实例;单例类必须给所有对象提供这一实例。,什么是Singleton单例模式,单例模式的意图:保证一个类仅有一个实例,并提供一个该类实例的全局访问点。,UML和设计模式,21,单例模式的类图解析,私有的构造方法类型为单例类本身的静态变量获得单例类的唯一实例的方法,UML和设计模式,22,UML和设计模式,23,单例模式示意代码:publicclassSingleton privatestaticSingletoninstance=null; /其它成员数据 protectedSingleton() publicstaticSingletongetInstance() if(instance=null) instance=newSingleton(); returninstance; ,9.3 里氏代换原则,里氏代换原则(Liskov Substitution Principal,LSP)的严格表达如下:如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。换言之,一个软件实体如果使用的是基类的话,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。,UML和设计模式,24,

      《UML设计模式 9 设计模式(3)--Factory,Singleton模式》由会员油条分享,可在线阅读,更多相关《UML设计模式 9 设计模式(3)--Factory,Singleton模式》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.