面向对象的六大原则

来源:互联网 发布:金叉 知乎 编辑:程序博客网 时间:2024/05/16 15:48

转载出处:http://blog.csdn.net/u012883858/article/details/51364025


面向对象的六大原则:

1.单一职责原则(Single Responsibility Principle  SRP)

2.开闭原则(Open Close Principle OCP)

3.里氏替换原则(Liskov Substitution Principle LSP)

4.依赖倒转原则(Dependence Inversion Principle  DIP)

5. 接口隔离原则(Interface Segregation Principle  ISP)

6.迪米特原则 (Least Knowledge Principle  LKP)


单一职责原则:

就一个类而言,应该仅有一个引起它变化的原因,简而言之:一个类应该是一组相关性很高的函数、数据的封装。

一个类尽量只有一个职责(相关),两个完全不一样的功能就不应该放在一个类中,通过不断审视自己的代码,根据具体的业务,功能对类进行相应的拆分。


开闭原则:

软件中的对象(类、模块、函数等)应该对于扩展开放,对于修改是封闭的。

程序一旦开发完成,程序中的一个类的实现只因错误而被修改,新的或者改变的特性应该通过新建不同的类来实现,新建的类可以通过继承的方式来重用原类的代码。

eg:抽象为接口,对于扩展,新增类来实现。


里氏替换原则:

1.如果对每一个类型为S的对象O1,都有类型为T的对象O2,是的以T定义的所有程序P在所有的独享O1都换成O2,程序P的行为没有发生变化,那么类型S是类型T的子类型。

2.所有引用积累的地方必须能透明地使用其子类的对象。

面向对象语言的三大特点:数据抽象(封装)、继承、多态

里氏替换原则依赖于继承、多态。通俗来说:只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或者异常,但反过来就未必能行,有子类出现的地方,父类未必就能适应。将父类使用的地方替换为子类,事项多态。这就是里氏替换原则。


依赖倒转原则:

指代一种特定的解耦形式,使高层次的模块不依赖于低层次的模块的实现细节的目的。

1.高层模块不应该依赖底层模块,两者都应该依赖其抽象。

2.抽象不应该依赖细节。

3.细节应该依赖抽象。

抽象:指接口或者抽象类

细节:实现类,实现接口或者继承抽象类而产生的类就是细节,特点:可以直接被实例化

也就是说,模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或者抽象类来实现,依赖抽象而不依赖具体实现,这就是依赖倒转原则。


接口隔离原则:

顾名思义,在设计类时,我们需要将各种接口隔离,使用最少的接口,类间的依赖关系应该建立在最小的接口上。他的目的就是:系统解开耦合,从而容易重构,更改和重新部署。


迪米特原则:

一个对象应该对其他对象有最少了解,这个原则的提出也是为了降低耦合度的,便于整个系统维护,升级等等。

类与类之间的关系越密切,耦合度越大,一个类发生改变时,对另一个类的影响也就越大, Only Talk To Your Immedate Friends  只于直接的朋友通信。


其实这六大原则,总的来说,目的都是一样:降低耦合性,便于维护,扩展。

当然,我们在编程的时候不能老是想着这六大原则,从而限制了我们的思维。需要通过大量实践让我们来把这六大原则融会贯通。

0 0
原创粉丝点击