面向对象的设计原则总结

面向对象主要有7大原则,分别为单一职责原则,开放关闭原则,里氏替换原则,依赖倒置原则,接口隔离原则,组合复用原则,迪米特原则

面向对象设计原则是对面向对象思想的提炼,在编程中合理的运用这些原则能够很好的适用变化,提高代码的复用率以及增加可维护性和可扩展性

下面简单介绍一下这几大原则

1.单一职责原则(SRP)

功能要单一

发现职责,并把这些职责互相分离

可以看做是低耦合,高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,已提高内聚来减少引起变化的原因。职责过多,引起它的变化的原因就越多,这样就会导致职责依赖,大大提高其内聚性和耦合性

2.开放关闭原则  (OCP)

软件实体(类,方法)可以扩展(增加),但是不能在原来的方法或类上修改

对于扩展(增加)是开放的,对于修改是封闭的

是面向对象的核心思想

好处:可维护,可扩展,可复用,灵活性好

应对代码中频繁出现变化的部分做抽象,单不能过激,对程序中的每个部分可以抽象同样也不好

3.里氏代替原则  (LSP)

面向接口编程的基础

子类必须能替换它们的父类型

4.依赖倒置原则(DIP)

针对接口编程,而不是针对实现编程

抽象不应该依赖细节(具体),细节(具体)应该依赖抽象

高层模块不应该依赖底层模块

5.接口隔离原则(ISP)

不要让一个单一的接口承担过多的责任,而是把每个职责分到多个专门的接口中去

一个类对另一个类的依赖性应建立在最小的接口上

一个接口代表一个角色,不要把不同的角色都交给同一个接口

做接口设计的时候,要尽量设计的接口功能单一,功能单一,使它变化的因素就少,这样就更稳定。

6.组合复用原则(CRP)

在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分

尽量使用合成/聚合,尽量不要使用继承。

组合/聚合复用原则可以使系统更加灵活,类与类之间的耦合度降低,一个类的变化对其他类造成的影响相对较少,因此一般首选使用组合/聚合来实现复用;其次才考虑继承,在使用继承时,需要严格遵循里氏替换原则,有效使用继承会有助于对问题的理解,降低复杂度,而滥用继承反而会增加系统构建和维护的难度以及系统的复杂度,因此需要慎重使用继承复用。

7.迪米特法则(Law of Demeter)

指的是一个对象应当对其他对象有尽可能少的了解

只与你直接的朋友们通信;不要跟“陌生人”说话。

迪米特法则的初衷是降低类之间的耦合,实现类型之间的高内聚,低耦合,这样可以解耦。但是凡事都有度,过分的使用迪米特原则,会产生大量这样的中介和传递类,导致系统复杂度变大。所以在采用迪米特法则时要反复权衡,既做到结构清晰,又要高内聚低耦合。

 

想要了解更多,可以访问 https://www.cnblogs.com/PatrickLiu/p/8287784.html

猜你喜欢

转载自blog.csdn.net/weixin_41392824/article/details/81568737