问题的提出:
如果在甲类有乙类 的实例,则称 甲类 对乙类依赖。例如下面 Order类中有 Product类的实例,就说 Order类对 Product类 有依赖。
class Order {
...
Product product;
...
public Order() {
product = new Hardware();
}
}
其中Product是一个接口类,下面有HarDware、SoftWare、Service等具体类。以上代码是相对于HarDware类而写的,当相对SoftWare、Service等类实例化Order类时,必须改动Order类中的“product = new Hardware()”语句。
依赖注入:
将上述代码改变一下,如下:
class Order {
...
Product product;
...
public Order(Product product;) {
this.product = product;
}
}
这样,在实例化Order类时,直接传入某一HarDware、SoftWare、Service对象即可,无需对改进Order类,实现了松耦合。