简单工厂(Java)

工厂减少了需要从对象创建代码创建对象的代码之间的耦合。通过调用类构造函数而不是通过调用代表调用者创建对象的某个函数,不会显式地创建对象。一个简单的 Java 示例如下:

interface Car {
}

public class CarFactory{
  static public Car create(String s) {
    switch (s) {
    default:
    case "us":
    case "american": return new Chrysler();
    case "de":
    case "german": return new Mercedes();
    case "jp":
    case "japanese": return new Mazda();
    }
  }
}

class Chrysler implements Car {
  public String toString() { return "Chrysler"; }
}

class Mazda implements Car {
  public String toString() { return "Mazda"; }
}

class Mercedes implements Car {
  public String toString() { return "Mercedes"; }
}

public class CarEx {
  public static void main(String args[]) {
    Car car = CarFactory.create("us");
    System.out.println(car);
  }
}

在这个例子中,用户只是给出了他需要的一些提示,工厂可以自由地构建适当的东西。它是一个依赖倒置Car 概念的实现者可以自由地返回用户请求的适当的具体 Car,而后者又不知道所构建的具体对象的细节。

这是一个工厂如何工作的简单例子,当然在这个例子中总是可以实例化具体的类; 但是可以通过隐藏包中的具体类来防止它,从而迫使用户使用工厂。

.Net 小提琴上面的例子。