设计模式之依赖倒置原则

概念描述

        高层次的模块不应该依赖于低层次的模块,它们都应该依赖于抽象;抽象不应该依赖于细节,细节应该依赖于抽象

举例说明

      每个村都有专门的邮递员,如果要寄信是需要把信自己送到邮递员家的。当时我父亲在南方打工,我母亲会经常让我把写给父亲的信送到邮递员李四家,一直持续了好几年。但是随着打工潮兴起,村里大量的年轻人都出门务工,李四也是其中之一。所以有一次我去寄信,李四家人告诉我李四已经不是邮递员了,现在新的邮递员是村里的王五,于是我需要重新跑到王五家。可是过了一阵子,王五也出门务工了,邮递员又换成了另外一个,我还得重新跑。我记得再过了一段时间,村里就没有邮递员了,而是在小卖部那里修了一个邮筒,寄信就扔邮筒里面,镇上的邮递员则会定期每隔几天来村里的邮筒取信。

这是一个很典型的依赖倒置原则的例子: 寄信这个活动,主要存在两种角色:寄信人和邮递员。 最开始寄信人强依赖于邮递员,寄信需要送到邮递员家。这种模式缺点比较明显,邮递员换了很麻烦。直到后面增加了邮筒,寄信人不再直接依赖邮递员,而是依赖一个站着不会动的邮筒。

上面的邮筒,可以让邮递员再怎么变化,都不会影响到寄信人。这种将寄信人直接依赖邮递员,改为寄信人和邮递员互不依赖,两者都依赖于邮筒的过程,正是“依赖倒置”。

作用

  • 依赖倒置原则可以降低类间的耦合性。
  • 依赖倒置原则可以提高系统的稳定性。
  • 依赖倒置原则可以减少并行开发引起的风险。
  • 依赖倒置原则可以提高代码的可读性和可维护性。

依赖倒置原则的实现方法

依赖倒置原则的目的是通过要面向接口的编程来降低类间的耦合性,所以我们在实际编程中只要遵循以下4点,就能在项目中满足这个规则。

  1. 每个类尽量提供接口或抽象类,或者两者都具备。
  2. 变量的声明类型尽量是接口或者是抽象类。
  3. 任何类都不应该从具体类派生。
  4. 使用继承时尽量遵循里氏替换原则。

代码应用举例

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值