常见面向对象的设计原则

常见面向对象的设计原则

单一职责原则(SRP)

单独的一个类,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制该类完成其他职责的能力。
难点在于如何区分职责、职责的粒度问题

开放封闭原则(OCP)

一个软件实体应当对扩展开放,对修改关闭。
即面对需求,对程序的改动是通过增加新代码实现的,而不是更改现有代码。

  • 合理地抽象,分离出变化和不变化的部分(钩子方法或是动态组合对象)
  • 钩子方法:对于抽象方法或者接口中定义的方法的一个空实现
    • 在实际中的应用,例如有一个接口,这个接口里有7个方法,而你只想用其中1个方法,那么这时,你可以写一个抽象类实现这个接口,在这个抽象类里将你要用的那个方法设置为abstract,其它方法进行空实现,然后你再继承这个抽象类,就不需要实现其它不用的方法,这就是钩子方法的作用

里氏代换原则(LSP)

使得开放-封闭成为可能。
原则:子类可以扩展父类的功能,但不能改变父类原有功能。

依赖倒转原则(DIP)

原则:要依赖于抽象,不要依赖于具体。

  • 抽象不应当依赖于具体,具体实现应当依赖于抽象;
  • 高层模块不应当依赖于底层模块,二者都应该依赖于抽象
  • 针对接口编程,不针对实现编程
  • 强内聚、松耦合
  • 底层的接口应该由高层提出,然后由底层实现,即底层的接口的所有权在高层模块,是一种所有权的导致。

合成/聚合复用原则

原则:尽量使用合成/聚合,而不是继承关系达到复用的目的。
合成/聚合原则就是在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用已有功能的目的。

接口隔离原则(ISP)

原则:使用多个专门的接口比使用单一的总接口要好。换而言之,从一个客户类的角度来讲:一个类对另外一个类的依赖性应当是建立在最小接口上的。
实现方法:使用多重继承分离接口

迪米特法则(LoD)

原则:最少知识原则

  • 如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
  • 也就是说,一个对象应当对其它对象有尽可能少的了解。
    解释:
    每一个软件单位对其它的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
    迪米特的根本思想:强调类之间的松耦合。类之间的耦合约弱,越有利于复用,一个弱耦合的类被修改,不会对有关系的类造成波及。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值