設計模式系列-簡單工廠模式

JAVA設計模式系列:

定義

簡單工廠模式又叫做靜態工廠方法模式,是常用的實例化對象模式。

角色

  • 工廠類:工廠類包含了負責創建所有實例具體邏輯;可以直接被外界調用來創建所需要的對象。

  • 抽象產品類:工廠類所創建對象的父類。

  • 具體產品類:工廠類創建的具體對象。

實現

這里簡單寫一個示例來實現普通工廠模式。

類圖

抽象產品類

public interface IFruit {

    void get();
}

定義了一個抽象水果類IFruit,其中包含一個get()

具體產品類

public class Apple implements IFruit {

    @Override
    public void get() {
        System.out.println("I am a apple.");
    }
}

public class Orange implements IFruit {

    @Override
    public void get() {
        System.out.println("I am a orange." );
    }
}

定義了2個具體水果類AppleOrange分別實現了IFruitget()方法。

工廠類

public class FruitFactory {

    public static IFruit getFruit(String type) {

        IFruit ifruit = null;
        if ("apple".equals(type)) {
            ifruit = new Apple();
        } else if ("orange".equals(type)) {
            ifruit = new Orange();
        }
        return ifruit;
    }
}

工廠類包含一個靜態方法getFruit(),功能是:根據不同的type返回不同的水果實例。

測試

    public static void main(String[] args) {

        IFruit apple = FruitFactory.getFruit("apple");
        IFruit orange = FruitFactory.getFruit("orange");

        apple.get();
        orange.get();
    }

分別調用水果工廠FruitFactory類來實例化2個不同的水果實例。運行結果:

I am a apple.
I am a orange.

總結

  • 優點:可以隱藏具體類名稱,提供參數給使用者直接調用;避免直接實例化對象,無需準備構造函數參數。

  • 缺點:在增加新產品的時候,必須修改工廠類,違背了開放封閉原則。

JAVA設計模式系列:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容