面向对象的设计原则

1、单一职责原则

单一职责原则的核心思想是要求一个类只具有一项职责,并且引起这个类发生变化的原因只有一个。
  如果一个类承担的责任过多,这些职责之间难免相互关联,高度耦合,这与面向对象高内聚低耦合的原则是相悖的。当类的职责过多,就应该考虑将类拆分,而拆分的原则就是单一职责原则。
  使用单一职责原则可以使类变得简单,复杂度更低,并且短小的代码也更容易维护,可读性更高,此外当程序发生变更时,可以将变更风险降到最低。

2、里氏替换原则

里氏替换原则也叫做利斯科夫替换原则,由图灵奖得主芭芭拉利斯科夫女士提出,其核心思想是父类出现的地方必然能用子类替换,并且替换后程序的行为不会发生变换。
  但是要注意的是,里氏替换原则反之是不成立的,也就是说,子类出现的地方不一定能用父类替换,因为子类可以添加新的行为,而这些行为是子类特有的,父类中并不具备。
  里氏替换原则实际上对继承的方式提出了约束。在遵循里氏替换原则的前提下,子类应该尽可能不覆盖父类中已经实现的方法,因为这可能会破坏继承体系,使得系统的行为难以控制,但是子类新增的方法不受限制。

3、依赖倒置原则

依赖倒置原则的核心思想是程序应该依赖于抽象的接口,而不应该依赖于具体的类,或者编程时应该面向接口编程。
  在上层调用下层的过程中,如果下层是具体的类,那么类一旦发生变化,上层代码很可能也会发生变更。如果下层是抽象的接口,而接口的变化概率很小,即便实现接口的类发生了变化,只要保持接口稳定,上层代码就不需要改变。
  由于下层模块的修改而迫使上层模块发生变更的设计是荒谬的,因此在设计时应该使用面向接口的方式:下层模块实现抽象的接口,而上层模块只需依赖于这些抽象的接口,而无需依赖于具体的实现。

4、开放封闭原则

开放封闭原则的核心思想是程序应该是可扩展的,而不是可修改的,或者说程序对扩展开放,对修改关闭。
  实现开放闭合原则的关键还是要面向接口编程,让类依赖于抽象的接口。由于接口不会发生改变,因此依赖于接口的类也不会发生改变,从而实现对修改封闭,而通过实现接口可以定义新的类,满足新需求,从而实现对扩展开放。通过开放闭合原则设计出来的系统既能保证程序的灵活性,很方便地扩展新功能,又能保证程序的稳定性,控制需求变更的风险,降低维护成本。

5、接口隔离原则

接口隔离原则的核心思想是尽量使用多个功能单一的小接口,而不要使用一个功能复杂的大接口,对一个庞大接口的依赖很容易造成接口污染。
  如果接口中包含很多方法,实现接口的类必须实现接口中的每一个方法,不管这个方法对于类是否有实际意义,这显然不是一个好的设计,因此需要对这个接口进行拆分,将其拆分为若干个小接口。
  在运用接口隔离设计原则设计接口时,需要把握好接口的粒度,过大的接口会造成接口臃肿,过小的接口会造成接口泛滥,遵循的原则是接口只暴露调用方所需要的方法即可。

6、最少知道原则

最少知道原则也叫迪米特原则,其核心思想是一个对象对其它对象的了解应该尽可能地少,对象之间通过尽量少的方法联系。
  最少知道原则的目的是降低类之间的耦合度。由于每个类都减少了对其他类的不必要的依赖,因此类之间的耦合度降低了。但是为了让非直接类之间进行通信,必须使用中介类,这无疑增加了程序的复杂度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值