依赖注入
依赖注入
把有依赖关系的类放到容器中,解析出这些类的实例,就是依赖注入。目的是实现类的解耦。
如果一个类A的功能实现需要借助于类B,那么就成类B是类A的依赖。
如果在类A的内部去实例化类B,那么两者之间会出现比较高的耦合。一旦类B出现了问题,类A也需要进行改造。
如果这样的情况较多,每个类之间都有依赖,那么就会出现牵一发而动全身的情况,程序会极难维护,并且很容易出现问题。
要解决这个问题,就要把A类对B类的控制权抽离出来,交给第三方去做。把控制权反转给第三方,就称作控制反转(IOC Inversion Of Control).
控制反转是一种思想,是能够解决问题的一种可能的结果,而依赖注入(Dependency Injection) 就是其最典型的实现方法。
由第三方(我们称作IOC容器)来控制依赖,把他通过构造函数、属性或者工作模式等方法,注入到类A内。这样就极大程度的对类A和类B进行了解耦。
http://c.biancheng.net/design_pattern/
设计模式六大原则: 开闭原则
软件对象(类、模块、方法等)应该对于扩展是开放的,对修改是关闭的。
迪米特法则(LOD):
也叫最少知识原则。迪米特法则的定义是只与你的直接朋友交谈,不与"陌生人"说话。如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该应用。其目的是降低类之间的耦合度,提高模块的相对独立性。
里氏替换原则:
子类应当可以替换父类并出现在父类能够出现的地方。
单一职责原则:
对象不应承担太多功能,正如一心不能而用,比如太多的工作(种类)会使人崩溃。唯有专注才能保证对象的高内聚;唯有唯一,才能保证对象的细粒度。