• 结构型模式/设计模式


    结构型模式

    涉及如何组合类和对象来获得更大的结构。

    1. 结构型类模式: 采用继承机制来组合接口或实现,通常是静态的,类继承方式。
    2. 结构型对象模式: 描述如何对对象进行组合,从而获得新功能的一些方法。

    相关设计模式

    Composite模式(组合模式)

    描述如何构造一个类层次式的结构,这一结构由两种类型的对象(基元对象和组合对象)所对应的类构成。其中的组合对象使得你可以组合基元对象以及其他的组合对象,从而形成任意复杂的结构。

    Proxy模式(代理模式)

    proxy对象作为其他对象的一个方面替代或占位符。可以多种形式:如局部空间代表远程地址空间中的对象、要求被加载的较大的对象、保护敏感对象的访问。
    proxy还提供了对对象的一些特有性质的一定程度上的间接访问,从而限制、增强或修改这些性质。

    Flyweight模式(享元模式)

    为共享对象定义了一个结构。至少两个原因需要共享对象:效率和一致性。享元模式主要强调对象的空间效率。

    Facade模式(门面/外观模式)

    如何用单个对象表示整个子系统,模式中的facade用来表示一组对象,facade的职责是将消息转发给它所表示的对象。

    Bridge模式(桥接模式)

    将对象的实现和抽象分离,从而可以独立地改变他们,重点是桥接类。

    Decorator模式(装饰模式)

    描述如何为对象动态的添加职责。采用递归方式组合对象,从而允许你添加任意多的对象职责。
    重点,每个decorator对象必须与其组件接口兼容,并且保证将消息传递给它。


    结构型模式的讨论

    总的来说,有一定相似性,继承或接口实现机制用于基于类的模式,而对象组合机制用于对象式模式。

    适配器模式和桥接模式

    共同点:
    都是给另一个对象提供一定程度的间接性,有利于系统的灵活性。它们都涉及到从自身以外的一个接口向这个对象转发请求。

    异同:
    适配器模式三要素:目标接口+待适配类+适配器,继承待适配类(或者持有待适配对象),实现目标接口,完成适配。
    桥接模式三要素:桥接类+接口+接口实现(多种),桥接类持有接口对象,并且面向接口编程,实现抽象向具体的桥接过程,为用户提供一个稳定的接口。
    桥接模式往往在类的设计之前实施,因为已经预见这个抽象将有多种实现;适配器模式在类已经设计好后实施。
    适配器使得两个已有的接口协同工作。而facade模式,往往定义新的接口。

    组合模式、装饰模式和代理模式

    共同点:
    组合模式和装饰模式,都基于递归组合来组织可变数目的对象。
    装饰模式和代理模式,两者都描述了怎么为对象提供一定程度上的间接引用,在实现时,均持有一个指向另一对象的指针,并向这个对象发送请求。

    异同一:
    组合模式三要素:组件(接口)+组合(实现)+树(结构)
    装饰模式三要素:接口(被装饰者的抽象)+装饰者(持有被装饰着的实例,常见构造器注入)
    代理模式三要素:接口(代理类和被代理类的抽象)+代理类(持有被代理类的实例)

    异同二:
    装饰模式旨在不生产子类即可给对象添加职责。组合模式旨在构造类,使多个相关的对象能够以统一的方式处理,重点在于表示而不是修饰。
    代理模式不能动态的添加或分离性质,不为递归设计,目的是直接访问一个实体不方面或不和要求时,为这个实体提供一个替代者。
    代理模式中,实体定义了关键功能,代理提供对他的访问。而装饰模式中,实现仅提供部分功能,一个或多个装饰器完成其他功能。
    装饰模式,适用于编译时不能(或不方面)确定对象的全部功能的情况,有一定开放性。代理模式,则强调一种关系,往往是静态表述。

  • 相关阅读:
    mybatis 查询list,内容为null,但list的size 为1
    mysql 父子表 注意事项
    导入
    php生成签名及验证签名
    PHP通过OpenSSL生成证书、密钥并且加密解密数据,以及公钥,私钥和数字签名的理解
    PHP 做 RSA 签名 生成订单(支付宝例子)
    接口安全调用该怎么做?签名?证书?服务安全?
    PHP 以POST方式提交XML、获取XML,最后解析XML
    php 解析xml 的四种方法
    php 模拟POST提交的2种方法
  • 原文地址:https://www.cnblogs.com/lknny/p/5909117.html
Copyright © 2020-2023  润新知