簡單工廠(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 小提琴上面的例子。