設計模式記錄-工廠方法模式

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

其通用格式爲:

產品的接口

public interface Product {
    
    void method();
}

具體產品

public class ConcreteProduct2 implements Product {
    public void method() {
        //具體處理
        System.out.println("this is ConcreteProduct2");
    }
}


public class ConcreteProduct1 implements Product {
    public void method() {
        //具體處理
        System.out.println("this is ConcreteProduct1");
    }
}

抽象工廠類

public abstract class Creator {
    //創建Product
    public abstract <T extends Product> T createProduct(Class<T> c);
}

具體工廠類

public class ConcreteCreator extends Creator {

    public <T extends Product> T createProduct(Class<T> c) {
        Product product = null;
        try {
            product = (Product) Class.forName(c.getName()).newInstance();
        } catch (Exception e) {
            //異常處理
        }
        return (T) product;
    }
}

場景類

public class Client {
    public static void main(String[] args) {
        Creator creator = new ConcreteCreator();
        ConcreteProduct1 product = creator.createProduct(ConcreteProduct1.class);
        // 具體業務處理
        product.method();
    }
}

優點

  1. 良好的封裝性,代碼結構清晰。創建產品只需要知道產品的類名即可,不用知道創建過程,降低模塊間的耦合度。
  2. 易於擴展。增加產品時只需要創建產品實現接口即可。
  3. 屏蔽產品。產品類實現如何變化調用者不需要關心,只需要關心產品的接口,只要產品接口不變化,系統中的上層模塊就不需要變化。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章