1. 程式人生 > 其它 >Spring框架(三) JDBCTemplate,宣告式事務,自動裝載(註解)

Spring框架(三) JDBCTemplate,宣告式事務,自動裝載(註解)

工廠模式

目錄

  • 何為工廠模式
  • 工廠方法與抽象工廠
  • 如何在Java EE中通過@Producers@Inject註解實現工廠模式
  • 如何建立自定義註解以及通過@Qualifier消除具體實現之間的歧義 工廠模式有兩種模式:工廠方法和抽象方法。它們的意圖是一樣的:提供一個介面,在不指定具體類的情況下建立相關或依賴的一系列物件。

一.何為工廠模式

工廠的目的在於建立物件。建立的邏輯被封裝在工廠中,要麼提供一個方法來返回新建立的物件(工廠方法模式),要麼將物件的建立委託給子類(抽象工廠模式)。 客戶端不必考慮介面或類的不同實現,它只需通過工廠(工廠)獲取介面實現的一個例項的即可,這樣客戶端與物件的建立就實現瞭解耦 解耦是應用依賴反轉原則的結果,這帶來了很多好處,其中最重要的好處就是實現了高層類與底層類之間的解耦。通過解耦,具體類實現的變化不會影響到客戶端,這降低了類與類之間的耦合,並提升了靈活性。

二.工廠方法

GoF一書是這樣描述工程方法模式的:“定義一個用於建立物件的介面,不過讓子類決定例項化那個類” 工廠極大降低了new關鍵字的使用次數,並且將初始化過程與不同的具體實現封裝起來。將這些需求中心化可以極大減少向系統中新增或刪除具體類的影響以及具體的類依賴的影響。

1.使用普通程式碼實現工廠方法 被具體實現繼承的DrinksMachine抽象類

public abstract class DrinksMachine {
    public abstract Drink dispenseDrink();
    public String displayMessage(){
        return "Thank for your custom.";
    }
}

DrinksMachine抽象類的CoffeeMachine實現

public class CoffeeMachine extends DrinksMachine {
    public Drink dispenseDrink() {
        return new Coffee();
    }
}

DrinksMachine抽象類的SoftDrinksMachine實現

public class SoftDrinksMachine extends DrinksMachine {
    public Drink dispenseDrink() {
        return new SoftDrink();
    }
}

Drink介面

public interface Drink {}

Drink介面的SoftDrink實現

public class SoftDrink implements Drink {
    SoftDrink() {
        System.out.println("Soft drink");
    }
}

Drink介面的Coffee實現

public class Coffee implements Drink {
    Coffee() {
        System.out.println("Coffee");
    }
}

CoffeeType列舉

java<br>public enum CoffeeType {EXPRESSO, LATTE}</p> <p>public Drink dispenseDrink(CoffeeType type) {<br> Drink coffee = null;<br> switch (type) {<br> case EXPRESSO: coffee = new Expresso();<br> case LATTE: coffee = new Latte();<br> }<br> return coffee;<br>}<br>