码迷,mamicode.com
首页 > 其他好文 > 详细

面向对象六大基本原则

时间:2018-05-10 17:25:59      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:基本原则   中介   影响   耦合性   存在   开闭原则   灵活   错误   聚合   

设计模式六大基本原则
 

1.单一职责原则

英文:Single Responsibility Principles,缩写SRP
 
定义:就一个类而言,应该仅有一个引起它变化的原因。
 
理解:例如两个完全不一样的功能就不应该放在一个类中。一个类总应该是一组相关性很高的函数,数据的封装。
对应一个类,不求功能面面俱到,只求能把一件事做好

2.开闭原则

英文:Open Close Principle,缩写OCP
 
定义:对于扩展是开放的,对于更改是封闭的。就是说软件实体(类、模块、函数等等)应该可以扩展,但是不能修改。
 
理解:在软件的生命周期中,因为变化,升级维护等原因需要对软件原有代码进行修改时,可能会将错误引入源码已经经过测试的没有错误的旧代码中,造成以前没有错误的代码错误。因此,当软件需要变化时,我们应该尽量通过扩展的方式来实现变化,而不是通过修改已有代码来实现。
 
实现开放封闭原则的关键就是抽象。对应已存在的实现类对应修改时封闭的,但是心的实现类可以通过覆盖父类的接口应对变化。

3.里氏替换原则

英文:Liskov Substitution Principle,缩写LSP
 
定义:所有引用基类的地方必须能透明的使用其子类的对象
 
理解:只要父类能出现的地方子类就可以出现,而且替换为子类不会产生任何错误或异常,使用者根本不需要知道是父类还是子类。但是,反过来就不行了,有子类出现的地方,父类未必能适应。总结起来就是:抽象。
 

4.依赖倒置原则

英文:Dependence Inversion Principle,缩写DIP
 
定义:高层模块不应该依赖底层模块,两个都应该依赖抽象;抽象不应该依赖细节,细节应该依赖抽象。
 
抽象是指接口或抽象类,两者都是不能直接被实例化的;细节就是实现类,实现接口或继承抽象类而产生的类就是细节,其特点是可以实例化,也就是可以加上一个关键字 new 产生一个对象。高层模块就是调用端,底层模块就是具体实现类。
 
理解:这个原则的精髓就是,面向接口编程,或者说面向抽象编程,这里的抽象是指接口或者抽象类。依赖倒转原则是开放封闭原则实现的手段,是抽象的最好规范。依赖抽象,而不依赖具体实现。

5.接口隔离原则

英文:Interface Segregation Principle,缩写ISP
 
定义:客户端不应该依赖它不需要的接口,即类间的依赖关系应该建立在最小接口上。
 
理解:就是将非常庞大,臃肿的接口拆分成更小的和更具体的接口(这个和单一职责有点像只不过这个是接口),这样使用者只需要知道他们感兴趣的方法就行。这样做可以使系统拥有更低的耦合性、更高的灵活性。这个原则说白了就是,让客户端依赖的接口尽可能的小。

6.迪米特原则

英文:Law of Demeter,缩写LOD
 
定义:这个原则也叫最少知识原则:一个对象应该对其它对象有最少的了解。
 
理解:这个原则有一个英文解释就是说 Only talk to your immedate friends,翻译就是只和直接的朋友通信。什么是直接朋友?每个对象都必然会与其他对象有耦合关系,两个对象直接的耦合就成为朋友关系,这种类型有很多,如组合,聚合,依赖等。
 
调用者或者依赖者只要知道它需要的方法即可,至于方法是如何实现的,实现方法的类需要做什么,都不需要知道。知道的越少耦合度约低,当一个类发生变化的时候,对另一个类的影响越小。就像现实中的找中介租房,我们只关系房间的面积和租金,让中介将符合要求的房子提供给我们就行了。

 

面向对象六大基本原则

标签:基本原则   中介   影响   耦合性   存在   开闭原则   灵活   错误   聚合   

原文地址:https://www.cnblogs.com/gxl1995/p/9020094.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!