首页 > 代码库 > 设计模式:依赖反转
设计模式:依赖反转
一直说依赖反转,但是没明白是不太清晰什么是依赖反转。
最近看了 《敏捷软件开发:原则、模式与实践》这本书中说的依赖反转,结合自己的常写的代码,有一点新的见解。
以咱们常见的手机充电器为例:
比如我有Nokia X2手机(nokia出品的安卓机,本人手机这块比较节省),手机正常来说需要依赖手机充电器来进行充电。
我的Nokia手机用的就是Nokia配套的充电器。
1 class NokiaPhone{2 private NokiaCharger charger;3 4 public void charge(){5 charger.charge()6 }7 }
如果类设计成这样呢,NokiaPhone 强依赖的是 NokiaCharger , 而NokiaCharger不依赖任何类【1】。
为什么呢?因为NokiaPhone类里面充电器的类型是NokiaCharger已经强制写死了。
但是我们发现,其它Android手机只要是Mini Usb接口的充电器,我的Nokia手机都能用它来充电。
如果我们的NokiaPhone类设计中充电器类型还是NokiaCharger的话,则不能满足需求。
我们这时候修改一下 NokiaPhone的设计。
class NokiaPhone{ private MiniUSBCharger charger; public void charge(){ charger.charge() }} interface MiniUSBCharger{ void charge();}
综合【1】与【2】来看,我们可以看到,NokiaPhone的强依赖无论是NokiaCharger还是MiniUSBCharger都是强依赖,这不变。
而实现了 NokiaCharger从什么都不依赖,到依赖MiniUSBCharger的反转【反转的结论】。
结论:很简单,当依赖一个具体类的时候,想想是不是应该抽象一个满足当前需求的接口出来,然后依赖该接口。
这样有利于后面的扩展,而扩展只需要满足你按照需求设计的接口。
设计模式:依赖反转
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。