设计原则——依赖倒置原则
——敏捷的不是过程,而是要靠设计的敏捷
原则内容是什么?
高层不依赖低层,而是都依赖抽象
抽象不依赖实现,而是实现依赖抽象。
解决了什么问题?
面向过程思维方式往往是高层调低层,层层调用,如果修改了低层,影响会层层上传。
高层更接近客户,而客户的需求会不断变更
要实现高内聚低耦合的目标
对客户程序来说,因为我更接近业务,所以由我来面向业务定义接口;接口谁来实现,我不关心,我只管调用。实现细节会随需求不断变动,如果抽象由高层定义,只要抽象不变,客户程序就不需要变化,降低了客户与实现模块间的耦合。
策略模式遵循了本原则。
例子
好莱坞规则:Don't call me, I'll call you
在框架设计中使用。
框架提供抽象,你的实现依赖它的抽象,你负责实现它提供的接口的具体逻辑;
框架会调用你,你不要调用框架。
一个简化的http框架例子:
HttpMaster有多个Worker组成的线程池,接收http请求并派发给Worker处理,Worker里的Connection调抽象方法Handle。
添加业务逻辑,只需要继承Command的处理类,实现Handle方法即可。当有连接进来,框架会主动调用响应的Command子类来处理。
版权声明: 本文为 InfoQ 作者【GalaxyCreater】的原创文章。
原文链接:【http://xie.infoq.cn/article/989974492013ddc839503d44a】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论