Skip to content

什么是模式?

约 1208 字大约 4 分钟

2018-04-14

什么是模式?

模式是一种解决方案,可用于解决软件设计中遇到的常见问题。

我们每天都在使用 模式

为什么学习模式?

模式主要有三大优点:

  • 模式是已验证的解决方案

    它们为解决软件开发中遇到的问题提供可靠的方法。 使用已验证的解决方案,这些解决方案体现了开发人员的经验及见解。

  • 模式很容易被复用

    模式通常是一种立即可用的解决方案,可以对其进行修改以满足个人需求。 该特性是的这些模式的功能非常强大。

  • 模式富有表达力

    看到模式时,通常就表示有一个设置好的结构和表达解决方案的词汇,已帮助我们非常轻松的表达出所实现的解决方案。

小提示

模式的作用仅仅是为我们提供一个解决问题的方案。 模式无法解决所有的问题,也无法取代优秀软件设计师的工作,但模式能够为这些工作提供支持。

设计模式的其它优点:

  • 复用模式有助于防止在应用程序开发过程中小问题引发大问题。
  • 模式可以提供通用的解决方案,并且其记录方式不需要与某个特定问题挂钩。
  • 某些模式确实能够通过避免代码复用来减少代码的总体资源占用量。
  • 模式添加到开发人员的词汇中,会使沟通更快速。

编写设计模式

编写优秀的设计模式是一项具有挑战性的任务。 模式不仅需要为最终用户提供大量的参考资源,还需要能够证明自己为何是必要的。

  • 模式的实用性有多少?

    确保模式描述的事能够解决重复出现的问题的已经验证的解决方案。

  • 牢记最佳实践

    做出的设计决策应该基于通过对最佳实践的理解而获得的原则。

  • 设计模式对于用户来说应该是透明的

    设计模式对于任何类型的用户体验都应是完全透明的。 它们主要是为使用它们的开发人员提供服务,而不应强制改变用户的行为。

  • 要记住独创性在模式设计中不是重点

    编写模式时,我们不需要是已有解决方案的最初发现者,也不必担心我们的设计有一小部分与其他模式有重叠, 如果我们的方法很强大,有广泛的适用性,那么它就有可能被认定为是一个有效的模式。

  • 模式需要一批有说服力的示例

    好的模式描述需要伴随着一系列同样强有力的示例,以演示所编写模式的成功应用。

反模式

如果我们认为一种模式代表一种最佳实践,那么一种反模式就代表我们已经学到的教训。

反模式是:

  • 描述一种针对某个特定问题的不良解决方案,该方案会导致糟糕的情况发生;
  • 描述如何摆脱前述的糟糕情况以及如何创造好的解决方案。

反模式是一种值得记录的不良设计。

设计模式类别

创建型设计模式

创建型设计模式专注于处理对象创建机制,以适合给定情况的方式来创建对象。

创建对象的基本方法可能导致项目复杂性增加,而这些模式旨在通过控制创建过程来解决这种问题。

创建型设计模式包括:

  • Constructor - 构造器
  • Factory - 工厂
  • Abstract - 抽象
  • Prototype - 原型
  • Singleton - 单例
  • Builder - 生成器

结构型设计模式

结构型模式与对象组合有关,通常可以用于找出在不同对象之间建立关系的简单方法。

这种模式有助于确保在系统某一部分发生变化时,系统的整个结构不需要同时改变。 同时对于不适合因某个特定目的而改变的系统部分,这种模式也能够帮助它们完成重组。

结构型设计模式包括:

  • Decorator - 装饰器
  • Facade - 外观
  • Flyweight - 享元
  • Adapter - 适配器
  • Proxy - 代理

行为型设计模式

行为模式专注于改善或简化系统中不同对象之间的通信。

行为模式包括:

  • Iterator - 迭代器
  • Mediator - 中介者
  • Observer - 观察者
  • Visitor - 访问者