面向对象的五大基本原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

⾯向对象的五⼤基本原理
⾯向对象的五⼤基本原理
1.单⼀职责原则(SRP)
类的功能要单⼀,不能包罗万象,跟杂货铺似的。

核⼼思想为:⼀个类,最好只做⼀件事,只有⼀个引起它的变化。

2.开放封闭原则(OCP)
对象或实体应该对扩展开放,对修改封闭。

更改封闭即是在我们对模块进⾏扩展时,勿需对源有程序代码和DLL进⾏修改或重新编译⽂件!这个原则对我们在设计类的时候很有助,
坚持这个原则就必须尽量考虑接⼝封装,抽象机制和多态技术!
核⼼思想是:软件实体应该是可扩展的,⽽不可修改的。

也就是,对扩展开放,对修改封闭。

总结:“需求总是变化”没有不变的软件,所以就需要⽤封闭开放原则来封闭变化满⾜需求,同时还能保持软件内部的封装体系稳定,不被
需求的变化影响。

3.⾥⽒替换原则(LSP)
在对象 x 为类型 T 时 q(x) 成⽴,那么当 S 是 T 的⼦类时,对象 y 为类型 S 时 q(y) 也应成⽴。

(即对⽗类的调⽤同样适⽤于⼦类)
核⼼思想是:⼦类对象能够替换⽗类对象,⽽程序逻辑不变。

总结:⾥⽒替换原则能够保证系统具有良好的拓展性,同时实现基于多态的抽象机制,能够减少代码冗余,避免运⾏期的类型判别
4.依赖倒置原则(DIP)
⾼层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。

具体实现应该依赖于抽象,⽽不是抽象依赖于实现。

我们不应该让⼦类依赖于实体,不应该让⽗类模块依赖于⼦类模块。

所以我们需要将⾷草动物设计为抽象类,即抽象类或接⼝。

这样下层只需要实现相应的细节⽽不会影响⽗类。

其核⼼思想是:依赖于抽象。

将耦合紧密的两个模块进⾏分离接⼝和实现,主要依赖于接⼝编程。

总结:依赖于抽象,就是对接⼝编程,不要对实现编程。

5.接⼝隔离原则(ISP)
不应强迫客户端实现⼀个它⽤不上的接⼝,或是说客户端不应该被迫依赖它们不使⽤的⽅法,使⽤多个专门的接⼝⽐使⽤单个接⼝要好的多!
核⼼思想是:使⽤多个⼩的专门的接⼝,⽽不要使⽤⼀个⼤的总接⼝。

使⽤臃肿的接⼝,会造成实现类实现接⼝的所有⽅法,不管是它需要的还是不需要的,造成接⼝污染。

接⼝污染是指把接⼝做的过于“胖”,派⽣类必须实现某些它⽤不到的功能,这样不仅加⼤了接⼝间的耦合,⽽且带来不必要的复杂性,造成接⼝污染。

总结:遵守接⼝隔离原则,将“胖”接⼝拆分为独⽴的⼏个接⼝,各实现类分别与需要的接⼝类来建⽴依赖关系。

相关文档
最新文档