设计模式之结构型设计模式

结构型设计模式

  1. 适配器
  2. 桥接
  3. 装饰
  4. 组合
  5. 外观
  6. 享元
  7. 代理

适配器(Adapter)

  • 问题

    在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?

  • 解决方案

    将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 --《设计模式》Gof

  • 类图

    两种适配器方式,一种组合方式,一种继承方式,根据面向对象原则,能用组合不用继承。
    Adapter

桥接(Bridge)

  • 问题

    在很多游戏场景中,会有这样的情况:【装备】本身会有的自己固有的逻辑,比如枪支,会有型号的问题,同时现在很多的游戏又在不同的介质平台上运行和使用,这样就使得游戏的【装备】具有了两个变化的维度——一个变化的维度为“平台的变化”,另一个变化的维度为“型号的变化”。如果我们要写代码实现这款游戏,难道我们针对每种平台都实现一套独立的【装备】吗?复用在哪里?如何应对这种“多维度的变化”?如何利用面向对象技术来使得【装备】可以轻松地沿着“平台”和“型号”两个方向变化,而不引入额外的复杂度?

  • 解决方案

    将抽象部分与实现部分分离,使它们都可以独立地变化。 --《设计模式》Gof

    桥模式不能只是认为是抽象和实现的分离,它其实并不仅限于此。其实两个都是抽象的部分,更确切的理解,应该是将一个事物中多个维度的变化分离。

  • 类图

    Bridge

装饰(Decorator)

  • 问题

  • 解决方案

  • 类图

    Decorator