Christopher Alexander说过:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案核心。这样,你就能一次又一次的使用该方案而不必做重复的重复劳动。
设计模式的组成
模式名称
一个助记名,统一两个词来描述模式问题、解决方案、效果。
问题
描述了应该在何时使用模式。
解决方案
描述了设计的组成成分,他们之间的相互关系以及各自的职责和写作方式。
效果
描述了模式应用的效果以及使用模式应权衡的问题。
设计模式
创建型
抽象工厂模式
建造者模式
原型模式
单例模式
结构型
适配器模式
桥接模式
外观模式
装饰模式
代理模式
组合模式
享元模式
行为型
职责链模式
命令模式
解释器模式
迭代器模式
中介模式
备忘录模式
观察者模式
状态模式
模板方法模式
访问者模式
策略模式
单一职责原则
就一个类而言,应该仅有一个引起他变化的原因。
在软甲设计过程中,我们需要发现职责并吧这些职责互相分离。如果你能想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。
个人理解:从类的设计上做拆分细化,不要一个类做很多事情,否则可能互相影响。要做到高内聚、低耦合。
开放封闭原则
软件实体(类、函数、模块)应该可以扩展,但是不可以修改。
对于扩展是开放的,对于更改是封闭的。
个人理解:软件设计过程中,要面对抽象编程。对于确定的事,要封装实现;对于不确定的事,使用抽象实现。
依赖倒转原则
A. 高层模块不应该依赖底层模块。应该依赖抽象。
B. 抽象不应该依赖细节。细节应该依赖抽象。
个人理解:针对接口编程。
里氏代换原则
子类型必须能够替换掉他们的父类型。
个人理解:应该是设计父子继承关系过程中需要考虑的,子类应当能完全替换父类。
网友评论