設計模式-工廠方法模式

1、 概述:

定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到子類。

2. 模式中的角色

  • 抽象工廠(Creator):這個抽象類(或接口)聲明一個創建對象的工廠方法,用來返回一個Product類型的對象。

  • 具體工廠(ConcreteCreator):重定義工廠方法,返回一個具體的Concrete Product實例。

  • 抽象產品(Product):定義工廠方法所創建的對象。

  • 具體產品(ConcreteProduct): 具體產品,繼承自Product抽象類。

3、結構圖

在這裏插入圖片描述

4、代碼實現

//抽象產品
abstract class Product {    
    //聲明抽象業務方法
    public abstract void opration();
}

// 具體產品 A
class ConcreteProductA extends Product {
    public void opration() {
        //業務方法的實現
    }
}

// 具體產品 B
class ConcreteProductB extends Product {
    public void opration() {
        //業務方法的實現
    }
}


//抽象工廠,聲明瞭一個創建Product的方法,(聲明爲接口或者抽象類)
interface Factory {
    public Product factoryMethod();
}

//具體產工廠,產品類 A 的創建者,繼承自抽象工廠Creator
class ConcreteAFactory implements Factory {
    public Product factoryMethod() {
        return new ConcreteProductA ();
    }
}

//具體產工廠,產品類 B 的創建者,繼承自抽象工廠Creator
class ConcreteBFactory implements Factory {
    public Product factoryMethod() {
        return new ConcreteProductB();
    }
}

具體調用:

//創建A
Factory factory = new ConcreteAFactory();
Product product = factory.factoryMethod();

5、 使用場景

  • 對於某個產品,調用者清楚地知道應該使用哪個具體工廠服務,實例化該具體工廠,生產出具體的產品來。
  • 子類的數量不固定,隨時可能有新的功能子類出現

參考文章工廠方法模式設計模式學習筆記-工廠方法模式

發佈了138 篇原創文章 · 獲贊 146 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章