依赖
依赖简单来说就是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),然后再进行其他逻辑。这种做法有两种坏处:
- 耦合性太强,如果B类修改,那么A类可能也需要修改
- B初始化的过程可能会持续很久,如果在测试的时候不断初始化会很慢
控制反转的精髓在于主动于被动
def foo(b):
doSomethingWith(b)
end
此时函数是被动
传入一个b对象来执行函数逻辑,b对象可以是一个约定好的接口,因此:
- 可以解耦合
- 测试阶段可以先初始化好一个对象b然后不断执行测试,大大减少初始化的次数。
依赖注入
是控制反转思想的一种实现
网友评论