一、 "开放-封闭"原则(OCP):即一个软件实体应当对扩展开放,对修改关闭。核心思想:就是未卜先知,设计之初(重构也可以),就猜测出变化,抽象出来,就完成了对扩展开放,对修改关闭的思想。
二、 里氏代换原则(LSP):即子类型(subtype)必须能够替换它们的基类型。核心思想:是面向对象三大要素---多态。
三、 依赖倒置原则(DIP):即要依赖于抽象,不要依赖于具体。核心思想:依赖注入---从外部传入对象(注入)。
---什么叫依赖,这就叫依赖,我不能离开你,我要调用你,没有你我实现不了功能,这就是依赖
四、 接口隔离原则(ISP):即要求一个类对另外一个类的依赖性应当是建立在最小接口上的。核心思想:10个专门的接口,好过1个总接口负责10个功能,总结口就是污染接口,不要污染接口。
五、 合成/聚合复用原则(CARP):即在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新对象通过向这些对象的委派达到复用已有功能的目的。核心思想:优先使用对象组合,而不是使用继承去达到代码复用的母的。
六、 迪米特法则(LoD)[最少知识原则]:即一个对象应当对其它对象有尽可能少的了解。核心思想:类之间的通信,尽量弱(松)耦合,多使用注入,而不是具体实例化,类尽量羞涩一点,多使用private、protected等访问权限。
七、 单一职责原则:一个类应该只承担一个职责。核心思想:改变它的原因只有一个,因为它只负责一件事。如果有多个原因能引起这个类的变化,那就是因为这个类负责的事情太多了,解决办法:将这个类分离成多个类,各负其责。
@什么是设计模式?
---设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
---设计模式,就是软件设计的很好的范例。(前人的总结。)
---设计模式的中心思想是解耦(Decouple)。解除了耦合,代码才能易扩展,易维护,易复用三要素。
@设计模式和七大原则的关系?
---设计模式的基石是七大原则,设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。
@总结:
1,设计模式是软件工程的基石脉络,如同大厦的结构一样。在软件开发中真正运用到了设计模式,你才算开始了软件设计,否则不叫软件设计。
2,设计模式告诉人们如何设计出灵活的面向对象软件架构,发挥面向对象的优势,实现代码可复用。“可复用”的终极形式是API。今天我们能够用上Boost、BCL、JDK甚至Cocoa,设计模式功不可没。