关于几个结构型模式的讨论

这篇具有很好参考价值的文章主要介绍了关于几个结构型模式的讨论。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

结构型模式的思路是组合,而根据组合侧重的不同方面,分为了不同的模式。

  • 结构型模式的思路和行为型模式中的模板方法模式有一定相似性,尤其是在实现具体的函数时,不过不同之处在于模板方法模式采用的是继承,并且它们的目的也不一样,结构型模式的目的是扩展、增减功能,而模板方法模式的目的是泛化通用流程。

  • 代理模式组合了一个提供具体功能的对象,然后为其它对象提供相同的接口;可以通过代理模式进行缓存、记录log、访问限制等操作,但主要的功能还是由其内部持有的提供服务的对象提供的。

  • 由于代理对象和服务对象遵循相同的接口,因此它们可以互换。

  • 相比之下装饰器对象尽管和源服务对象拥有相同的接口,但它们无法互换使用,原因在于装饰器对象依赖源对象来提供服务,装饰器对象本身能够增强服务功能,但并没有真正实现服务功能,它是依赖于服务对象来实现功能的;这导致装饰器模式受声明顺序的影响。

  • 装饰器模式像是个单链表。

  • 可以声明多个装饰器类并动态配置装饰器对象。

  • 适配器模式与代理模式和装饰器模式相比仍然依赖已有服务对象来提供功能,但不同的是,适配器对象使用已有服务来提供新的功能而不是实现与现有服务对象相同的接口。适配器模式一般用于实现需要用到遗留系统的功能的新的需求。

  • 门面模式也提供新的功能,与适配器不同的是:适配器通常只封装一个服务对象, 而门面对象作用的范围更广,通常会作用于整个对象子系统上。

代理模式

关于几个结构型模式的讨论

装饰模式

class Application is
    method dumbUsageExample() is
        source = new FileDataSource("somefile.dat")
        source.writeData(salaryRecords)
        // 已将明码数据写入目标文件。

        source = new CompressionDecorator(source)
        source.writeData(salaryRecords)
        // 已将压缩数据写入目标文件。

        source = new EncryptionDecorator(source)
        // 源变量中现在包含:
        // Encryption > Compression > FileDataSource
        source.writeData(salaryRecords)
    // 已将压缩且加密的数据写入目标文件。

关于几个结构型模式的讨论

适配器模式

关于几个结构型模式的讨论

比如,已有服务能够处理某种格式的数据,而新的业务要求使用另外一种格式,此时就可以创建适配器类来对数据格式进行转换,使得仍然能够复用已有服务来处理新需求。

门面(外观)模式

关于几个结构型模式的讨论文章来源地址https://www.toymoban.com/news/detail-525930.html

引用

  1. refactoringguru.cn/design-patterns

到了这里,关于关于几个结构型模式的讨论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式--------结构型模式

    结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构

    2024年02月13日
    浏览(48)
  • 结构型模式-装饰者模式

    概述 我们先来看一个快餐店的例子。 快餐店有炒面、炒饭这些快餐,可以额外附加鸡蛋、火腿、培根这些配菜,当然加配菜需要额外加钱,每个配菜的价钱通常不太一样,那么计算总价就会显得比较麻烦。 使用继承的方式存在的问题: 扩展性不好 如果要再加一种配料(火

    2024年02月01日
    浏览(48)
  • 【结构型模式】装饰者模式

    装饰模式 — Graphic Design Patterns 设计模式 | 装饰者模式及典型应用 黑马程序员Java设计模式详解-装饰者模式概述 装饰者模式 ( Decorator )是一种结构型设计模式,它允许你在 不改变 对象自身的基础上, 动态 地给一个对象 添加额外的功能 。该模式是通过创建一个包装对象来实

    2023年04月15日
    浏览(34)
  • 结构型模式-过滤器模式

    允许开发人员使用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。 结果: Males:  Person : [ Name : Robert, Gender : Male, Marital Status : Single ] Person : [ Name : John, Gender : Male, Marital Status

    2024年02月09日
    浏览(35)
  • 结构型模式-适配器模式

    是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。 意图: 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 主要解决: 主要解决在软件系

    2024年02月10日
    浏览(37)
  • 设计模式结构型——外观模式

    目录 什么是外观模式 外观模式的实现 外观模式角色 外观模式举例 外观模式类图 外观模式代码实现 外观模式的特点 优点 缺点 注意事项 应用场景 总结         外观模式(Facade Pattern):又叫作门面模式,归属于结构型模式。外观模式定义了提供了定义了一个统一的高层

    2024年02月16日
    浏览(54)
  • 设计模式之结构型模式

    本文已收录于专栏 《设计模式》   大话设计模式主要分为三部分,第一部分是创建型模式,第二部分是结构型模式,第三部分是行为型模式。至于为什么要分为这三部分,我的理解是创建型是用于创建对象的而结构型是发生在类与类之间的关系是比较宏观的,比如说组合

    2024年02月11日
    浏览(37)
  • 结构型设计模式——外观模式

    有句话说这个世界就是个草台班子,只不过排面做的好看而已,里面都是一包糠。这句话来形容外观模式非常准确,外观模式又叫门面模式,顾名思义一个系统我不管你里面有多复杂有多少屎山代码,我只要求你提供的接口好用,简单就行,即门面要有排面!用专业的话讲是

    2024年01月22日
    浏览(44)
  • 17 结构型模式-享元模式

    1 享元模式介绍 2 享元模式原理 3 享元模式实现 抽象享元类 可以是一个接口也可以是一个抽象类,作为所有享元类的公共父类, 主要作用是提高系统的可扩展性. 具体享元类 具体享元类中要将内部状态和外部状态分开处理,内部状态作为具体享元类的成员变量,而外部状态通过注

    2024年02月08日
    浏览(33)
  • 结构型设计模式——桥接模式

    桥接模式(Bridge pattern): 使用桥接模式通过将实现和抽象放在两个不同的类层次中而使它们可以独立改变。 桥接模式 (Bridge) 是一种结构型设计模式, 可将 抽象 部分与 实现 部分 分离 ,使它们都可以独立的变化。如果一个系统需要在构件的抽象化角色和具体化角色之间增加更

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包