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

设计模式-创建型模式的优缺点比较

4页
  • 卖家[上传人]:大米
  • 文档编号:500431541
  • 上传时间:2024-02-25
  • 文档格式:DOCX
  • 文档大小:15.36KB
  • / 4 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、比较几种创建型模式的优缺点,仔细考察这几种模式的区别和相关性。第一类是工厂模式,工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有三种形态:简单工厂模式;工厂方法模式;抽象工厂模式是。前两者是类的创建模式,后者是对象的创建模式。简单工厂:简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例,涉及工厂角色(Creator)、抽象产品(Product)角色及具体产品(Concrete Product)角色等三个角色。优点:模式的核心是工厂类,该类中含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例,客户端可以免除直接创建产品对象的责任,而仅仅负责“消费”产品。简单工厂模式实现了对责任的分割。缺点:当产品类有复杂的多层次等级结构时,工厂类只有它自己。模式中工厂类集中了所有的产品创建逻辑,形成一个无所不知的全能类。将多个创建逻辑放在一个类中,当产品类有不同接口种类时,工厂类需要判断在什么时候创建某种产品,使得系统在将来进行功能扩展时较为困难。该模式采用静态方法作为工厂方法,而静态方法无法由子类

      2、继承,因此工厂角色无法形成基于继承的等级结构。简单工厂模式只在有限的程度上符合“开-闭”原则。工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。工厂方法模式是简单工厂模式的进一步抽象和推广,其基本思想是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。优点:多态性:客户代码可以做到与特定应用无关,适用于任何实体类子类可以重写新的实现,也可以继承父类的实现。加一层间接性,增加了灵活性。良好的封装性,代码结构清晰。扩展性好,在增加产品类的情况下,只需要适当修改具体的工厂类或扩展一个工厂类,就可“拥抱变化”屏蔽产品类。产品类的实现如何变化,调用者都不需要关心,只需关心产品的接口,只要接口保持不变,系统中的上层模块就不会发生变化。典型的解耦框架。高层模块只需要知道产品的抽象类,其他的实现类都不需要关心,符合迪米特法则,符合依赖倒置原则,符合里氏替换原则。缺点:需要Creator和相应的子类作为工厂方法的载体,如果应用模型确实需要creator和子类存在,则很好;否则的话,需要增加一个类层次。抽象工厂:提供一个创建

      3、一系列相关或相互依赖对象的接口,而无需指定它们具体的类,客户端不必指定产品的具体类型,创建多个产品族中的产品对象。优点:分离了具体的类,一个工厂封装创建产品对象的责任和过程,它将客户与类的实现分离易于交换产品系列,只需改变具体的工厂就可以使用不同的产品配置。有利于产品的一致性,当一个系列中的产品对象被设计成一起工作时,一个应用一次只能使用同一个系列中的对象。缺点:难以支持新的产品等级结构,支持新的产品等级结构就要扩展抽象工厂接口。单例模式:一个类仅有一个实例,自行实例化并向整个系统提供一个访问它的全局访问点。确保一个类只能被实例化一次。优点:跨平台:使用合适的中间件,可以把singleton模式扩展为跨多个JVM和多个计算机工作。适用于任何类:只需把一个类的构造函数变成私有的,并且在其中增加相应的静态函数和变量,就可以把这个类变为singleton。可以通过派生创建:给定一个类,可以创建它的一个singleton子类。延迟求值:如果singleton从未使用过,那么就绝不会创建它。缺点:摧毁方法未定义: 没有好的方法去摧毁一个singleton,或者解除其责任。不能继承:从single

      4、ton派生的类并不是singleton。如果要使其成为singleton,必须要增加所需的静态函数和变量。效率问题:每次调用instance方法都会执行if语句,多余。不透明性: singleton的使用者知道它们正在使用一个singleton ,因为它们必须要调用instance方法。建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件,从而建造出完整的对象。优点:建造模式的使用使得产品的内部表象可以独立地变化。使用建造模式可以使客户端不必知道产品内部组成的细节。每一个Builder都相对独立,而与其他的Builder无关。模式所建造的最终产品更易于控制。缺点:建造者模式的“加工工艺”是暴露的,这样使得建造者模式更加灵活,也使得工艺变得对客户不透明。原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。以一个已有的对象作为原型,通过它来创建新的对象。在增加新的对象的时候,新对象的细节创建工作由自己来负责,从而使新对象的创建过程与框架隔离开来。优点:原型模式允许动态

      5、地增加或减少产品类。由于创建产品类实例的方法是产品类内部具有的,因此增加新产品对整个结构没有影响。原型模式提供简化的创建结构。工厂方法常需要有一个与产品类相同的等级结构,而原型模式不需要。具有给一个应用软件加载新功能的能力。产品类不需要非得有任何事先确定的等级结构,因为原型模式适用于任何的等级结构。缺点:每一个类必须配备一个克隆方法。配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。关系总结:1 工厂方法模式是简单工厂模式的扩展,由于使用了多态性,工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。如果只有一个具体工厂类,工厂方法模式可以改造为简单工厂模式。2 抽象工厂经常用工厂方法来实现。3 Prototype:不需要创建Creator的子类,但它们通常需要一个针对Product类的Initialize操作。4 抽象工厂模式是对象的创建模式,是工厂方法模式的进一步推广。抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。5 工厂方法模式针对的是一个产品等级结构;抽象工厂模式需要面对多个产品等级结构。6 Singleton与其他创建型模式并不矛盾,可以用Singleton来实现其他模式中的对象。包括Abstract Factory、Builder、Prototype等。7 Builder和Abstract Factory都可以创建复杂的对象。但是Builder模式着重于一步步构造一个复杂的对象,强调的是产品的内部组成,Abstract factory着重于多个系列的产品对象。Builder在最后一步返回产品,而Abstract factory立即返回产品。Abstractor Factory处于更为具体的角度, Builder处于更宏观的角度。一个系统可以由一个建造模式和一个抽象工厂模式组成,客户端通过调用这个建造模式,间接地调用另一个抽象工厂模式的工厂角色。工厂模式返还不同产品族的零件,而建造模式把它们组装起来。8 Prototype和Abstract factory往往是竞争的关系,但是它们也可以一起使用。抽象工厂可以存储一个被克隆的原型的集合,并返回产品的对象。

      《设计模式-创建型模式的优缺点比较》由会员大米分享,可在线阅读,更多相关《设计模式-创建型模式的优缺点比较》请在金锄头文库上搜索。

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