设计模式-结构型 学习笔记

结构型

适配器模式

适配器模式(Adapter Pattern)是一种结构性设计模式,用于将一个类的接口转换成客户端所期望的另一个接口。它允许不兼容接口的类能够一起工作,促使不同接口之间的协同合作。

适配器模式可以分为两种主要类型:

  1. 类适配器模式:在类适配器模式中,适配器类通过继承被适配者类和实现目标接口来适配两者。这意味着适配器类既继承了被适配者的行为,又实现了目标接口。
  2. 对象适配器模式:在对象适配器模式中,适配器类使用被适配者对象作为一个成员变量,并实现目标接口。这意味着适配器类使用了组合关系,而不是继承,以连接客户端与被适配者。

桥接模式

桥接模式的主要目标是将抽象与实现分离,以便它们可以独立变化。这有助于处理多维度的变化,例如在图形界面库中,抽象可以代表不同的控件(按钮、文本框等),而实现可以代表不同的操作系统平台(Windows、Linux等)。这使得在新增新的控件或支持新的操作系统平台时,只需扩展抽象和实现,而无需修改现有代码。继承关系转换为关联关系,使用一个内部成员属性达到桥接的作用

组合模式

组合模式(Composite Pattern)是一种结构性设计模式,用于将对象组织成树形结构以表示"部分-整体"层次关系。组合模式允许客户端以一致的方式处理单个对象和对象组合,从而简化了客户端代码。

组合模式的优势在于它可以递归地处理整体-部分层次结构,使得客户端能够以一致的方式处理单个对象和对象组合。这有助于简化客户端代码,并提高了系统的可扩展性,因为可以轻松地添加新的组件类型。

装饰器模式

装饰器模式是在原有类的基础上动态添加新的功能,这种添加功能的方式不同于继承,它是在对象层面实现功能扩展,而不是继承的类层面,因此说装饰器模式比继承更加灵活

外观/门面 模式

用于包装一个内部复杂的逻辑,只对外提供一个统一简单入口,让使用者只关心业务的实际开发,不必在意逻辑的具体实现。但是违反了开闭原则

享元模式

它旨在减少内存或计算开销,特别是当系统中存在大量相似对象的情况下。享元模式通过共享相同状态的对象来降低资源消耗,从而提高性能和效率。享元模式有助于减少内存消耗,提高性能,但它也增加了代码的复杂性,因为需要处理内部状态和外部状态的分离。这个模式通常在需要处理大量相似对象且资源受限的情况下发挥作用,例如图形编辑器中的字符集管理、文本处理中的字形处理等

代理模式

代理模式的主要优点包括:

  • 控制对被代理对象的访问,允许在访问前后执行附加操作。
  • 实现懒加载,只在需要时创建具体主题对象。
  • 实现远程代理,允许客户端访问位于不同地址空间的对象。
  • 实现虚拟代理,允许在访问时创建昂贵的对象。

代理模式通常用于以下情况:

  • 懒加载:当创建和初始化具体主题对象是昂贵或需要延迟时,代理允许在实际需要时才进行创建和初始化。
  • 访问控制:代理可以控制对具体主题对象的访问,执行权限检查、日志记录等操作。
  • 远程访问:远程代理允许客户端访问位于不同地址空间的对象,例如在网络通信中。
  • 缓存:代理可以在具体主题对象上维护缓存,以提高性能。

典型的应用场景包括虚拟代理(Virtual Proxy)、远程代理(Remote Proxy)、缓存代理(Cache Proxy)、安全代理(Security Proxy)等。代理模式有助于实现对象访问控制和附加功能,同时保持对象的封装性。

你可能感兴趣的:(设计模式,学习,笔记)