代理模式、装饰模式、适配器模式、组合模式、桥梁模式、外观模式、享元模式【读书笔记】设计模式4章:结构型模式

我参照书中的例程重新构想了一些更加生动、易于理解的例子,希望大家喜欢。
代码可以通过以下链接进行浏览:


结构型模式描述了如何将对象或类结合在一起,形成更加强大的结构。

  • 代理模式
    • 定义
      • 也叫委托模式
      • 为其他对象提供一种代理,以控制这个对象的访问
      • 角色:抽象角色、真实角色、代理角色
      • 种类:远程代理(访问另外的JVM)、虚拟代理(延迟创建不需要的部件)、保护代理、缓存代理、同步代理、智能引用代理(比如日志)
    • 优点
      • 职责清晰
      • 高扩展性
      • 智能化:在运行时才确定被代理的真实对象
    • 使用场景
      • 非常广泛,比如RMI AOP
  • 装饰模式
    • 定义
      • 动态地给一个对象添加额外的职责
      • 角色:抽象构件、具体构件、装饰角色、具体装饰角色
    • 优点
      • 装饰类和被装饰类可以独立发展,不会耦合
      • 装饰模式是继承的替代方案
      • 装饰模式可以动态地扩展一个对象的功能
    • 缺点
      • 多层装饰比较复杂
    • 使用场景
      • 需要扩展一个类的功能
      • 需要动态地给一个对象增加功能
      • 需要给一批类进行改装或增加功能
      • JavaIO中很多都用了装饰模式
  • 适配器模式
    • 定义
      • 又叫变压器模式
      • 将一个类的接口转换成另一个接口
    • 优点
      • 可以让两个没有关系的类在一起运行
      • 增加了类的透明度
      • 提高类的复用度
      • 增强代码的灵活性
    • 使用场景
      • 修改一个正在运营的系统时,需要对系统进行扩展,此时已有一个类,单这个类不符合系统中的接口,这是需要适配器来转换接口
  • 组合模式
    • 定义
      • 又叫合成模式
      • 将对象组合成树形结构表示,使得整体和部分具有一致性
      • 角色:抽象部件、叶子部件、树枝部件
    • 优点
      • 高层模块调用相对简单
      • 节点自由增加
    • 缺点
      • 不易控制树枝的部件类型
      • 不易使用继承方法增加新的行为
    • 使用场景
      • 菜单、文件等
      • 需要客户端忽略整体和局部的区别,平等对待所有构件
  • 桥梁模式
    • 定义
      • 也叫桥接模式,是一种不常用的模式
      • 将抽象和实现解耦合,使得两者可以独立变化
      • 角色:抽象化角色、修正抽象化角色、实现化角色、具体实现化角色
    • 优点
      • 抽象和实现分离,实现可以不受抽象的约束
      • 客户端不用关心实现细节
      • 提高灵活性和扩展性
    • 使用场合
      • 如果需要在抽象和实现之间增加更多的灵活性
      • 实现化的改变对客户端是完全没有影响的
      • 可以动态耦合
      • 不希望继承的场合
      • 跨平台应用
      • C++中可以完全隐藏实现部分
  • 外观模式
    • 定义
      • 也叫门面模式
      • 要求子系统与外部的通信通过一个统一的对象进行
      • 角色:外观角色、子系统角色
    • 优点
      • 减少系统项目依赖
      • 提高灵活性
      • 增强安全性
    • 使用场景
      • 希望子系统提供外界访问接口
      • 子系统相对独立
      • 预防风险扩散
  • 享元模式
    • 定义
      • 是池技术的重要实现方式
      • 使用共享技术可以有效地降低大量细粒度操作产生的开销
      • 分为内部状态和外部状态
      • 角色:抽象享元、具体享元、享元工厂、客户端
    • 优点
      • 大幅减少系统中的内存开销
    • 缺点
      • 增加了系统的复杂性
      • 享元模式的状态外部化,使得外部状态的运行时间变长
    • 使用场景
      • 系统中有大量相似的对象
      • 对象的操作不需要特定的身份
      • 需要缓冲池的场景
      • Java中String Integer等都是享元模式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值