DIP依赖倒置原则
DIP是一种软件架构设计的原则
依赖倒置原则:它转换了依赖,高层模块不依赖于低层模块的实现,而低层模块依赖于高层模块定义的接口,通俗的讲,就是高层模块定义接口,低层模块复杂实现。
IOC控制反转
一种反转流、依赖和接口的方式(DIP的具体的实现方式)
IOC是一种软件设计模式
,它为相互依赖的组件提供抽象,将依赖(低层模块)对象的获得交给第三方系统来控制,即依赖对象不再被依赖模块的类中直接通过new来获取,IOC有2中常见的实现方式:依赖注入和服务定位
依赖注入(DI)
是控制反转(IOC)的一种重要方式,就是将依赖对象的创建和绑定转移到被依赖对象类的外部来实现
一个类用于实现某个功能不能直接在内部实现,要有可扩展性,这个时候可以采取抽象类定义一个接口,不同对象依次实现功能
构造函数注入依赖
public interface Book {
void buy();
}
public class GreenBook implements Book {
@Override
public void buy() {
Log.e("small", "greenBook");
}
}
public class RedBook implements Book {
@Override
public void buy() {
Log.e("small", "redBook");
}
}
public class Order {
private Book book;
//构造函数注入
public Order(Book b) {
book = b;
}
public void test() {
book.buy();
}
}
RedBook redBook=new RedBook();//在外部创建依赖对象
Order order=new Order(redBook);//通过构造函数注入依赖
order.test();
IOC容器
IOC容器实际上是DI(依赖注入)框架,好处是:
* 动态创建、注入依赖对象
* 管理对象生命周期
* 映射依赖关系