关于面向对象设计原则的一些理解

简介:因为七大原则比较多,所以简单梳理一下七大原则之间的关系和逻辑,便于理解和应用。对于每种原则具体的思想和实现,没有举例。

面向对象设计七大原则:

开闭原则(Open Closed Principle,OCP)
里氏替换原则(Liskov Substitution Principle,LSP)
依赖倒置原则(Dependence Inversion Principle,DIP)
单一职责原则(Single Responsibility Principle,SRP)
接口隔离原则(Interface Segregation Principle,ISP)
迪米特法则(Law of Demeter,LoD)
合成复用原则(Composite Reuse Principle,CRP)

复用

我认为,面向对象设计原则有一个很核心的思想就是复用,所有的原则都是为了更好的复用代码。设计模式就是充分利用了这些原则,指出了如何设计,能提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。
既然想要复用,那么最核心的地方应该就在于高内聚,低耦合
首先是内聚,如果一个模块足够"小",功能足够单一,它的内聚度就高,从而能更灵活以及更好得被复用。
其次是耦合,当两个模块之间关联度越小,那么显然就更灵活,更易于扩展;如果两个模块有着千丝万缕的关系,那么其中一个变化,必然会严重影响另一个,而新的模块想要加入,也必然要处理更多的细节。这很不明显不利于复用。
所以我们可以从加强内聚降低耦合这两个方面来梳理我们的七大原则。

加强内聚

当我们设计程序的时候,大部分都是在设计类和接口。那么为了增强类和接口的内聚性,可以使用以下这两个原则:

单一职责原则:提高类的内聚。
接口隔离原则:提高接口的内聚。

降低耦合

我们都知道类间发生联系,最常用的无非就是继承父类,实现接口,关联等。
那么我们应该如何降低耦合呢,开闭原则给了我们很好的答案。
开闭原则(Open Closed Principle,OCP):我们在设计程序时,应该对扩展开放,对修改关闭。也就是说,当有新的模块加进来的时候,我们是不应该去修改原有的代码的。但是对于更加具体的操作,开闭原则还没有说明,而以下的三个原则,就是开闭原则的重要实现手段。
依赖倒置原则:推荐我们在设计类间关系的时候,使用面向接口的方式。
合成复用原则:推荐我们在设计类间关系的时候,不使用继承,而是用关联关系(即一个类当成另一个类的成员变量)。
里氏替换原则 :当我们使用继承时,要注意达到——父类对象能出现的地方,子类对象必然也能出现,并且语法和业务逻辑上都不会出错。这就告诉我们尽量不要重写父类的方法。

除了以上4个更偏向于降偶的原则外,还有一个迪米特法则,也是用来降低耦合度的。他要求两个类之间如果无须直接通信,那就应该尽力通过第三方交互,并且要尽可能少得暴露自己的信息给外界。

总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值