面向对象的设计模式与原则

面向对象的特性

-封装:隐藏内部实现【减少耦合、提高软件可重用】

-继承:复用现有代码【可扩展性、代码重用】

-多态:同一个行为不同表现形态【可替换性、灵活性、简化性】

可实现:单继承+多接口实现、抽象方法和虚方法重写

从设计原则到设计模式

针对接口编程,而不是针对于具体实现编程
调用者无需知道所使用的方法的具体实现,而是想知道是否存在有实现该方法的接口定义

优先使用对象组合,而不是类继承
继承在某种程度上破坏了封装性,子类父类耦合度高;而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低

封装变化点
使用封装将不变的地方抽离出来,变化的地方进行封装,从而只需要改变变化点,而不影响其他不变的地方,实现层次的耦合

七大基本原则

1.单一职责原则(SRP)
一个类的功能要单一,职责划分清楚、否则就会太臃肿

2.开放封闭原则(OCP)
软件功能尽可能对扩展开放、修改封闭

3.里氏替换原则(LSP)
子类可以替换父类,但是父类不能替换子类

4.依赖倒置原则(DIP)
高层次模块不应该依赖于低层次模块,二者都应该依赖于抽象
抽象不应该依赖于实现细节,实现细节应该依赖于抽象

5.接口隔离原则(ISP)
不应该强迫客户程序依赖于它们不用的方法

6.迪米特法则(LoD)
如果两个软件实体无需直接通讯,那么就不应该发生直接的相互调用,可以通过第三方转发调用

7.合成复用原则(CRP)
它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现

参考视频和文档:

https://www.bilibili.com/video/BV1uJ41157dC?from=search&seid=12951163858889790025
http://c.biancheng.net/view/1317.html

posted @ 2020-04-12 21:17  quan0zhou  阅读(215)  评论(0编辑  收藏  举报