设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
优点:
1. 可重用代码
2. 代码易理解、软件易扩展
3. 代码易维护
软件之美:
软件的美在于它的功能、内部结构、被创造的方式。
对于用户来说,通过一个直观和简单的界面呈现的正确功能的程序,是美的;
对于设计者来说,软件内部结构被简单直观的方式分割,并减少内部耦合,是美的;
对于开发者来说,做成一个无缺陷的代码项目,是美的。
软件设计的七宗罪:
僵化(Rigidity):难改变;
脆弱(Fragility):易崩溃;
固化(Immobility):难重用;
黏滞(Viscosity):难做正确的事;
非必要行复杂性(NeedlessComplexity):过度设计;
非必要重复(NeedlessRepetition):易出错
无设计
六大设计原则:
SRP(SingleResponsibility Principle)单一职责原则:一个类只封装一种变化。
遵循单一职责原的优点有:
1.可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;
2.提高类的可读性,提高系统的可维护性;
3.变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。
OCP(Open-Closed Principle)开放-封闭原则:对扩展开放,对修改封闭
谨记:“Open for extension, Closed for modification”
LSP(Liskov Substitution principle):子类可以扩展父类的功能,但不能改变父类原有的功能。
定义:若对每个类型S的对象 o1,都存在一个类型为 T 的对象o2,使得在所有针对 T编写的程序 P中,用o1 替换 o2 后,程序 P 的功能不变,那么S 是T的子类型。
DIP(DependenceInversion Principle)依赖倒转原则:高层模块不依赖于底层模块,二者都应该依赖于抽象,抽象不应该依赖于细节;细节应该依赖于抽象。
ISP(InterfaceSegregation Principle)接口隔离原则:一个类对另一个类的依赖应该建立在最小的接口上。
LOD(Law of Demeter)迪米特法则:一个对象应该对其他对象保持最少的了解。
尽量降低类与类之间的耦合