笔友城堡 - 可定义的个人主页

前言

简单记录一下面对对象中常见的设计原则,单一职责原则开放封闭原则里氏替换原则接口分离原则依赖倒置原装,简单记录一下,方便自己查阅和学习。

正文

单一职责原则

单一职责原则(SRP)让一个类只负责一件事。

修改一个类的原因应该只有一个

如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化会削弱这个类完成其他职责的能力。

开放封闭原则

开放封闭原则(OCP),添加新功能时不需要修改代码。

类对扩展开发,对修改封闭

符合开闭原装最典型的设计模式就是装饰者模式,它可以动态的将职责添加到对象上,而不是去修改类的代码。

里氏替换原则

里氏替换原则(LSP)

继承是一种IS-A的关系,子类需要能够当成父类来使用,并且需要比父类更特殊。

子类对象必须能够替换掉所有父类对象

接口分离原则

接口分离原则(ISP)

不应该强迫客户依赖于他们不用的方法

多个专门的接口比使用总接口更好。

也就是一个接口中,只做该接口的功能,不要添加不需要或者其他的功能。

依赖倒置原则

依赖倒置原则(DIP)

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

抽象不应该依赖于细节,细节应该依赖于抽象。

高层模块包含一个应用程序中最重要的策略和选择和业务模块,如果高层模块依赖于底层模块,那么底层模块的改动会直接影响到高层模块,从而迫使高层模块也需要改动。

底层模块

提供具体实现细节和基础功能

可被替换,面向具体技术,为高层的业务目标服务

高层模块

包含系统的核心业务逻辑、策略和用例

不关心怎么实现,只要定义具有什么能力,比如(订单处理、支付流程和权限效验等功能框架,里面细节就必要清楚)

比如,我要保存数据,高层不需要知道怎么实现的,也就不关心是否用数据库还是文件存储等细节。

简单对比:

维度高层模块低层模块
关注点业务规则 / 策略技术细节 / 具体操作
变化频率相对少(核心不变)较频繁(可换实现)
依赖方向应依赖抽象实现抽象接口
类比公司管理层(定目标)基层员工(干具体活)

参考文章

相关网址

笔友城堡 - 可定义的个人主页

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...