什么是模式?
什么是模式?
模式是一种解决方案,可用于解决软件设计中遇到的常见问题。
我们每天都在使用 模式 !
为什么学习模式?
模式主要有三大优点:
模式是已验证的解决方案
它们为解决软件开发中遇到的问题提供可靠的方法。 使用已验证的解决方案,这些解决方案体现了开发人员的经验及见解。
模式很容易被复用
模式通常是一种立即可用的解决方案,可以对其进行修改以满足个人需求。 该特性是的这些模式的功能非常强大。
模式富有表达力
看到模式时,通常就表示有一个设置好的结构和表达解决方案的词汇,已帮助我们非常轻松的表达出所实现的解决方案。
小提示
模式的作用仅仅是为我们提供一个解决问题的方案。 模式无法解决所有的问题,也无法取代优秀软件设计师的工作,但模式能够为这些工作提供支持。
设计模式的其它优点:
- 复用模式有助于防止在应用程序开发过程中小问题引发大问题。
- 模式可以提供通用的解决方案,并且其记录方式不需要与某个特定问题挂钩。
- 某些模式确实能够通过避免代码复用来减少代码的总体资源占用量。
- 模式添加到开发人员的词汇中,会使沟通更快速。
编写设计模式
编写优秀的设计模式是一项具有挑战性的任务。 模式不仅需要为最终用户提供大量的参考资源,还需要能够证明自己为何是必要的。
模式的实用性有多少?
确保模式描述的事能够解决重复出现的问题的已经验证的解决方案。
牢记最佳实践
做出的设计决策应该基于通过对最佳实践的理解而获得的原则。
设计模式对于用户来说应该是透明的
设计模式对于任何类型的用户体验都应是完全透明的。 它们主要是为使用它们的开发人员提供服务,而不应强制改变用户的行为。
要记住独创性在模式设计中不是重点
编写模式时,我们不需要是已有解决方案的最初发现者,也不必担心我们的设计有一小部分与其他模式有重叠, 如果我们的方法很强大,有广泛的适用性,那么它就有可能被认定为是一个有效的模式。
模式需要一批有说服力的示例
好的模式描述需要伴随着一系列同样强有力的示例,以演示所编写模式的成功应用。
反模式
如果我们认为一种模式代表一种最佳实践,那么一种反模式就代表我们已经学到的教训。
反模式是:
- 描述一种针对某个特定问题的不良解决方案,该方案会导致糟糕的情况发生;
- 描述如何摆脱前述的糟糕情况以及如何创造好的解决方案。
反模式是一种值得记录的不良设计。
设计模式类别
创建型设计模式
创建型设计模式专注于处理对象创建机制,以适合给定情况的方式来创建对象。
创建对象的基本方法可能导致项目复杂性增加,而这些模式旨在通过控制创建过程来解决这种问题。
创建型设计模式包括:
- Constructor - 构造器
- Factory - 工厂
- Abstract - 抽象
- Prototype - 原型
- Singleton - 单例
- Builder - 生成器
结构型设计模式
结构型模式与对象组合有关,通常可以用于找出在不同对象之间建立关系的简单方法。
这种模式有助于确保在系统某一部分发生变化时,系统的整个结构不需要同时改变。 同时对于不适合因某个特定目的而改变的系统部分,这种模式也能够帮助它们完成重组。
结构型设计模式包括:
- Decorator - 装饰器
- Facade - 外观
- Flyweight - 享元
- Adapter - 适配器
- Proxy - 代理
行为型设计模式
行为模式专注于改善或简化系统中不同对象之间的通信。
行为模式包括:
- Iterator - 迭代器
- Mediator - 中介者
- Observer - 观察者
- Visitor - 访问者