工厂注入和依赖注入都是设计模式,可用于增强软件组件之间的松散耦合能力。
工厂设计模式用于创建对象。但是,对象的注入和生命周期管理应由应用程序内的程序员处理。无法在单个位置配置所有内容。因此,程序员需要在任何需要的地方调用对象创建逻辑,这最终会阻碍松散的耦合能力。
在DI设计模式中,可以在代码外部处理对象的创建,实例的注入和实例的生命周期管理。在春季,实例化,注入和生命周期管理由IOC容器处理。
| 序号 | 键 | 工厂设计模式 | DI设计模式 | 
|---|---|---|---|
| 1 | 对象创建 | 它用于创建对象。我们有单独的Factory类,其中包含创建逻辑。 | 它负责创建和注入对象。 | 
| 2 | 对象的状态 | 它负责创建有状态对象。 | 负责创建无状态对象 | 
| 3 | 运行时/编译时间 | 在编译时创建对象 | 在运行时配置对象 | 
| 4 | 代码变更 | 如果业务需求发生变化,则可能会更改对象创建逻辑。 | 无需更改代码 | 
| 5 | 机制 | 类依赖于工厂方法,而工厂方法又依赖于具体类 | 父对象和所有从属对象可以在单个位置创建 | 
static class PizzaFactory{
   public Pizza buildPizza(String pizzaType){
      ........
      Pizza pizza= //create pizza based on type
      return pizza;
   }
}
static void Main(){
   Pizza pizza = PizzaFactory.buildPizza("Greek style");
}public class CustomerExample {
   public Address address
   public CustomerExample(Address address) {
      this.address = address;
   }
}
public class Address {
   ..............
}