Skip to content

Head First 设计模式 14-复合模式

🏷️ 《Head First 设计模式》

复合模式

模式通常被一起使用,并被组合在同一个设计解决方案中。

复合模式在一个解决方案中结合两个或多个模式,以解决一般或重复发生的问题。

书中以 MVCModel-View-Controller)为例,讲解了其中使用到的设计模式。

  • 策略模式

    视图是一个对象,可以被调整使用不同的策略,而控制器提供了策略。

  • 观察者模式

    模型实现了观察者模式,当模型的状态改变,相关视图对象也会跟着改变。

  • 组合模式

    视图是各种 UI 组件的组合。顶层的组件包含其它组件,直到叶节点。

这些模式携手合作,把 MVC 模型的三层解耦,这样可以保持设计干净又有弹性。

与设计模式相处

这是本书的最后一章。

模式 是在某情境(context)下,针对某问题的某种解决方案。

模式分类

根据模式的目标分成三个不同类目:

  • 创建型

    创建型模式涉及到将对象实例化,这类模式都提供一个方法,将客户从所需要的实例化的对象中解耦。

    • Singleton 单件
    • Builder
    • Prototype
    • Abstract Factory 抽象工厂
    • Factory Method 工厂方法
  • 行为型

    只要是行为型模式,都涉及到类和对象如何交互及分配职责。

    • Template Method 模板方法
    • Visitor
    • Mediator
    • Iterator 迭代器
    • Command 命令
    • Memento
    • Interpreter
    • Observer 观察者
    • Chain of Responsibility
    • State 状态
    • Strategy 策略
  • 结构型

    结构性模式可以让你把类或对象组合到更大的结构中。

    • Decorator 装饰者
    • Composite 组合
    • Adapter 适配器
    • Proxy 代理
    • Facade 外观
    • Flyweight
    • Bridge

另外还可以根据模式所处理的是类还是对象来分类。

设计模式经典书籍

四人组(Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides)合著的《设计模式:可复用面向对象软件的基础》。
该书在 1995 年出版,揭开了设计模式的序幕。

反模式

反模式 告诉你如何采用一个不好的解决方案解决一个问题。

通过将反模式归档,我们能够帮助其他人在发现它们之前,分辨出不好的解决方案。

像模式一样,有许多类型的反模式,包括了开发反模式、OO 反模式、组织反模式和领域特定反模式。

反模式告诉你才用这个解决方案,在将来会为你带来怎样的麻烦,同时也会为你指出正确的方向,向你建议一些会引向好的解决方案的可能性。