面向对象原则

设计原则英文表达说明
单一职责原则SRP,Single Responsibility Principle一个类,应该仅有一个引起你它变化的原因。不要讲变化原因不同的职责封装在一起,而应该分离。
开放封闭原则OCP,Open Closed Principle软件实体应当对修改关闭,对扩展放开。
依赖倒置原则DIR,Dependency Inversion Principle依赖于抽象,而不应该依赖于具体,因为抽象相对稳定。
接口隔离原则ISP,Interface Inversion Principle尽量应用专门的接口,而不是单一的总接口,接口应该面向用户,将依赖建立在最小的接口上。
Liskov替换原则LSP,Liskov Substitution Principle子类必须能够替换基其基类。

 

 

 

 

 

单一职责原则

核心思想:一个类,最好只做一件事,只有一个引起它变化的原因。

单一职责原则可以看做是低耦合高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少变化的原因。

遵循这条规则的关键,并不是从功能点的多少来划分,而是从引起类变化的原因来把握。

可以通过Facade模式或Proxy模式进行职责分离。

 

开放封闭原则

核心思想:软件实体应该是可扩展,而不可修改的。也就是说对其扩展是开放的,对其修改是封闭的。

主要体现在两个方面:

对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的需求。

对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。

实现开放封闭的核心思想就是对抽象编程,而不是对具体编程,因为对抽象编程来说相对于稳定。

常用于实现的模式主要有Template Method模式和Strategy模式。

 

依赖倒置原则

核心思想:依赖于抽象

主要体现在:

高层模块不应该依赖于底层模块,二者都应该依赖于抽象。

抽象不应该依赖于具体,具体应该依赖于抽象。

依赖,一定会存在于类鱼类、模块与模块之间:依赖关系,也一定是系统设计必须关注的要点。面向对象设计在魔种层次上,就是一个关于关系处理的哲学,而依赖倒置原则正式这种哲学思想在具体应用中的体现。当两个模块之间存在紧耦合的关系时,最好的办法就是分离接口和实现:在依赖之间定义一个抽象的接口,使得高层模块调用接口的方法,而底层模块实现接口的定义,一次来有效控制耦合关系,达到依赖于抽象的设计目标。

抽象的稳定决定系统的稳定性,因为抽象是保持不变的,依赖于抽象是面向对象设计的精髓,也是依赖倒置原则的核心思想。

依赖于抽象是一个通用的规则,而某些时候依赖于细节是在所难免的。必须权衡在首相和具体之间的取舍,方法不是一成不变的。

依赖于抽象,就是要对接口编程,不要对实现编程。

 

接口隔离原则

核心思想:使用多个小的专门接口,而不要使用一个大的接口。

主要体现在:

接口应该是内聚的,应该避免出现“胖”的接口。

一个类对另一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法,这是一种接口污染。

分离手段主要有两种:

委托分离,通过增加一个新的类型来委托客户的请求,隔离客户和接口的直接依赖,但是会增加系统开销。

多重继承分离,通过接口多继承来实现客户的需求,这种方式值得推荐。

对于接口的理解并不完全局限于程序语义上定义的接口概念,还代表了逻辑上的接口概念。程序语言上的接口,就像C#语言中的interface定义的数据类型接口,接口隔离要求interface仅提供客户需要的程序特征;而逻辑接上的接口,代表了方法特征的集合,也可能是一个新的类型。不管怎样,为每个客户实现特定的接口,是接口隔离原则的统一思想。

建议规则:

将功能相似的接口合并,可能造成接口污染,实现内聚的接口才是接口设计的基本原则。

接口隔离原则,能够宝成系统扩展和修改的影响不会扩展到系统的其他部分,一定程度上对开放粉笔原则的遵守。

 

转载于:https://www.cnblogs.com/zqg123/p/7153120.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值