面向对象设计七大原则——代码示例

开闭原则

一个启蒙的例子:https://blog.csdn.net/blogjialeilei/article/details/78257532

还有一个水果的例子:https://blog.csdn.net/tiandiqing/article/details/4403549

里氏替换原则

定义:所有引用基类的地方必须能透明地使用其派生类的对象。

大概意思就是子类在最好不要重写父类的方法,以免在继承的时候发生错误

这个加减的例子说的很清楚:https://blog.csdn.net/weixin_43198436/article/details/88739519

迪米特原则(最少知道原则)(Law of Demeter ,LoD)

一个类只和自己的朋友通信。以求降低耦合度

这个综合的博客:https://blog.csdn.net/qq_34760445/article/details/82931002

单一职责原则

一个功能一个类(接口)

好吧,还是这个博客:https://blog.csdn.net/qq_34760445/article/details/82931002

接口分割原则:

不能强迫用户去依赖那些他们不使用的接口。

感觉这个不需要例子。就讲一下就行了

接口的设计原则:接口的设计应该遵循最小接口原则,不要把用户不使用的方法塞进同一个接口里。如果一个接口的方法没有被使用到,则说明该接口过胖,应该将其分割成几个功能专一的接口。

接口的依赖(继承)原则:如果一个接口a继承另一个接口b,则接口a相当于继承了接口b的方法,那么继承了接口b后的接口a也应该遵循上述原则:不应该包含用户不使用的方法。 反之,则说明接口a被b给污染了,应该重新设计它们的关系。
也就是:尽量的细化接口,精简接口。

单一职责强调的是接口、类、方法的职责是单一的,强调职责,方法可以多,针对程序中实现的细节;

接口分隔原则主要是约束接口,针对抽象、整体框架。

依赖倒置原则:

例子:https://blog.csdn.net/king123456man/article/details/81626127

A. 高层模块不应该依赖于低层模块,二者都应该依赖于抽象
B. 抽象不应该依赖于细节,细节应该依赖于抽象

C.针对接口编程,不要针对实现编程。

 组合/聚合复用原则

如果我们把“人”当成一个类,然后把“雇员”,“经理”,“学生”当成是“人”的派生类。这个的错误在于把 “角色” 的等级结构和 “人” 的等级结构混淆了。“经理”,“雇员”,“学生”是一个人的角色,一个人可以同时拥有上述角色。如果按继承来设计,那么如果一个人是雇员的话,就不可能是学生,这显然不合理。

定义:尽量使用对象组合/聚合,而不是集成关系达到软件复用的目的

聚合has-A
组合contains-A
集成is-A

少用继承!

 

 

总结:

在使用继承的时候,要使用开闭原则(对修改关闭,对扩展开放),子类必须不能修改基类的功能(里式替换原则)。如果要调用别的方法或者类,只能调用自己的朋友(最少知道原则)。接口要最小,要细化。高层不能过分依赖底层,要面对抽象编程(依赖倒置)。能不继承就不继承,明确is-a,contain-a,has-a 之间的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值