编程就像一门艺术;
一段漂亮的代码,不仅要简洁易读,而且可以被反复利用;
设计模式就是一套呗反复使用、多数人知晓的、经过分类编目的、代码设计经验的
总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;
设计模式是软件工程的基石脉络,如同大厦的结构一样。
1.设计模式的原则
① 开闭原则
原理:模块应对扩展开发,而对修改关闭;
模块的行为是可以扩展的,当应用的需求改变是,我们可以对模块进行扩展,是其
具有满足那些改变的新行为,即我们可以改变模块的功能;
对模块行为进行扩展时,不必改动模块的源代码。
② 里氏代换原则(LSP)
原理:任何基类可以出现的地方,子类一定可以出现;
LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响
时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。
③ 接口隔离原则:
原理:客户端不应该依赖他不需要的接口,一个类对另一个类的依赖应该建立在最小
的接口上。
一个接口代表一个角色,不应当将不同的角色都交给一个接口,没有关系的接口合并
在一起,形成了一个臃肿的大街口,这是对角色和接口的污染。
④ 依赖倒转原则:
原理:程序要依赖于抽象接口,不要依赖于具体实现;
高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象;
抽象不应该依赖于具体,具体应该依赖于抽象;
⑤ 合成/聚合复用原则:
合成/聚合复用原则就是在一个新的对象里面使用一些已有的对象,使之成为新的对象,
新的对象通过向这些对象的委派达到复用已有功能的目的。
他的设计原则是:尽量使用合成/聚合,尽量不要使用继承。
⑥ 最少知识原则:(迪米特法则)
原理:一个对象应当对其他对象有尽少可能的了解,不和陌生人说话;
2.设计模式的分类:
设计模式共23中,共分为九种类型。
① 创造型模式:
单例模式、抽象工厂模式、生成器模式、工厂模式、原型模式;
② 接口适配
适配器模式、桥接模式、外观模式;
③ 对象去耦
中介者模式、观察者模式;
④ 抽象集合
组合模式、迭代器模式;
⑤ 行为扩展
访问者模式、装饰模式、责任链模式;
⑥ 算法封装
模板方法、策略模式、命令模式;
⑦ 性能与对象访问
享元模式、代理模式;
⑧ 对象状态模式
备忘录模式
③ 其他两种:
解释器模式、状态模式。