第六篇: 设计模式六大原则: 老板是如何减轻负担的 -- 依赖倒置原则

很多创业公司都对外宣称“扁平化管理”,什么是“扁平化管理”呢?请看下面这张架构图:

这里写图片描述

因为人少,老板直接管理着采购、销售、人力跟 IT 等人员,虽然累了点,但部门少、人不多也还好。

但是随着公司规模发展,每次新加入人员老板都要去认识、沟通,出现问题还得去约出去喝个茶,老板发现自己的时间都浪费在这些琐事,容易耽搁事不说,还发挥不出更大价值。

这时他决定招一些经理替自己分别管理各个部门,自己只要管理这些经理就好了。

于是新的架构图是这样的:

这里写图片描述

老板这下子省心多了,有问题直接找部门经理就好了。至于哪个部门有召新人、或者员工不好好干开除了,他都不用操心。

传统软件开发中,类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。参考自这里
这对应创业初期公司的“扁平化”,老板就是高层类A,高层一旦对低层的具体有依赖,将来低层变动 时高层就需要修改,这很类,也容易出错。

这里写图片描述

而老板负担能够减轻,正是依赖倒置原则的作用。

高层模块不应该依赖具体底层模块,两个都应该依赖接口。简单的说就是面向接口编程,而不是面向具体实现。 
任何变量都不应该持有一个指向具体类的指针或引用。

这里写图片描述

在实际编程中,我们一般需要做到如下3点:

  1. 低层模块尽量都要有抽象类或接口,或者两者都有。
  2. 变量的声明类型尽量是抽象类或接口。
  3. 使用继承时遵循里氏替换原则

依赖倒置有三种方式来实现

  1. 通过构造函数传递依赖对象; 
    比如在构造函数中的需要传递的参数是抽象类或接口的方式实现。
  2. 通过setter方法传递依赖对象; 
    即在我们设置的setXXX方法中的参数为抽象类或接口,来实现传递依赖对象。
  3. 接口声明实现依赖对象,也叫接口注入; 
    即在函数声明中参数为抽象类或接口,来实现传递依赖对象,从而达到直接使用依赖对象的目的。

依赖倒置原则的核心就是要我们面向接口编程,理解了面向接口编程,也就理解了依赖倒置。

代码地址点这里

感谢

《大话设计模式》 
http://blog.csdn.net/imyfriend/article/details/7465596 
http://blog.csdn.net/zhengzhb/article/details/7289269

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值