- 模式的由来
Christopher Alexander(克里斯托佛·亚历山大)——模式之父(建筑)。
模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
A pattern is a successful or efficient solution to a recurring problem within a context.
而软件的设计模式是在 1994年被发表的——23种软件设计模式,为了用模式统一沟通面向对象方法的分析、设计和实现间的鸿沟。
什么是软件设计模式?
软件模式(software patterns)——将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照模板。
- 设计模式是什么?
设计模式(Design Pattern)——一套被反复使用的、多数人只晓得、经过分类编目的、代码设计经验的总结,实用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码的可靠性。
设计模式关键要素:
-
- 模式名称(Pattern name):多由其功能或模式结构命名。
- 问题(Problem):描述应何时使用模式,并包含了设计中存在的问题级问题存在的原因。
- 解决方案(Solution):描述了一个设计模式的组成部分,以及这些组成部分之间的关系、各自的职责和协作方式,通常解决方案通过UML类图和核心代码进行描述。
- 效果(Consequence):描述了模式的优缺点以及在使用模式时应权衡的的问题
设计模式可分为:
-
- 创建型(Creational):如何创建对象。(5种)
- 结构型(Structural):如何实现类或对象的组合。(7种)
- 行为型(Behavioral):描述类或对象怎样交互以及怎样分配职责。(11种)
还可以根据某个模型主要是用于类之间的关系还是用于处理对象之间的关系,分为类模型、对象模型。两种分类方法结合使用,例:单例模式是对象创建型模式,模板方法是类行为型模式;
- 设计模式用处
1>避免一些重复性工作,有助于提高设计和开发效率。
2>便于开发人员之间进行沟通交流,使得设计方案更加通俗易懂。
3>兼顾了系统的可重用性和可扩展性,使得开发人员可以更好地重用一些已有的方案、功能模块甚至一个完整的软件系统。
4>合理使用设计模式并对设计模式的使用情况进行文档化,将有助于别人更快的理解系统。
5>学习设计模式对于初学者有助于更加深入地理解面向对象思想。
7大面向对象设计原则,分别是:
1. 单一职责原则(Single Responsibility Principle)
2. 里氏替换原则(Liskov Substitution Principle)
3. 依赖倒置原则(Dependence Inversion Principle)
4. 接口隔离原则(Interface Segregation Principle)
5. 迪米特法则(Law Of Demeter)
6. 开闭原则(Open Close Principle)
7. 组合/聚合复用原则(Composite/Aggregate Reuse Principle CARP)
对于设计原则会在下一篇介绍。
对于设计模式并非是死板硬套,应该理解其思考模式,活用在开发过程中。
OMG也是正在学习,有什么不足和错误的地方欢迎指正。