设计模式之依赖

2020-12-23  本文已影响0人  懒无趣

依赖

依赖简单来说就是A类实现的过程中需要用到B类,这称为A依赖B

class A:
    def do(bClass B):
        doWith(bClass)
    end

依赖倒置

由于A类强依赖于B类,如果B类有多种其他的实现方法,那么修改起来违反开闭原则。

依赖倒置原则:从原来的A强依赖于B,修改为A需求IB接口,B类去实现该接口。即本来上层调用者(A)得受制于B类的实现,修改为B类去满足A类的需求。

那么代码即可修改为A类依赖于IB接口,然后再将B类传入。

控制反转

控制反转是一种思想

def foo():
    b = new B()
    doSomethingWith(b) 
end

如上代码,函数执行的时候内部主动调用new B()生成一个B对象(因此A依赖B),然后再进行其他逻辑。这种做法有两种坏处:

  1. 耦合性太强,如果B类修改,那么A类可能也需要修改
  2. B初始化的过程可能会持续很久,如果在测试的时候不断初始化会很慢

控制反转的精髓在于主动于被动

def foo(b):
   doSomethingWith(b)
end

此时函数是被动传入一个b对象来执行函数逻辑,b对象可以是一个约定好的接口,因此:

  1. 可以解耦合
  2. 测试阶段可以先初始化好一个对象b然后不断执行测试,大大减少初始化的次数。

依赖注入

是控制反转思想的一种实现

上一篇 下一篇

猜你喜欢

热点阅读