面向对象设计的SOLID原则

SOLID原则:
s单一责任原则
o开闭原则
l里氏替换原则
i接口分离原则
d依赖倒置原则
参考自面向对象设计的SOLID原则

里氏替换原则:
当一个子类的实例应该能够替换任何其超类的实例时,它们之间才具有is-A关系. 以下参考https://www.cnblogs.com/wang-can/archive/2013/10/01/3348302.html
通俗的定义:子类可以扩展父类的功能,但不能改变父类原有的功能,就是不要去重写父类的方法。

里氏替换原则包含以下4层含义:

1,子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。
2,子类中可以增加自己特有的方法。
3,当子类覆盖或实现父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4,当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

第1,2层意思好理解。第4层意思也在实践中得到了确认:当子类中的覆盖的方法的返回类比父类中对应方法的返回类型更宽松,JAVA程序是编译不通过的。唯独第3层意思有些奇怪,我在实践中发现,不论是子类方法的形参类型是比父类中对应方法的类型严格或宽松(其实此时两方法不属于覆盖关系,证据是子类方法上加@Override会编译报错),最终客户端代码调用的都是父类方法

依赖倒置原则(Dependence Inversion Principle):

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

2、抽象不应该依赖细节,细节应该依赖抽象。

3、依赖倒置的中心思想是面向接口编程。

4、依赖倒置原则是基于这样的设计理念:相对于细节的多变性,抽象的东西要稳定的多。以抽象为基础搭建的架构比以细节为基础搭建的架构要稳定的多。

5、使用接口或抽象类的目的是指定好规范,而不涉及任何具体的操作,把展现细节的任务交给他们的实现类来完成。

接口分离原则可参考下文
https://blog.csdn.net/Hurricane_m/article/details/89321976

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_23204557

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值