設計模式之—工廠方法模式


1.工廠方法模式定義

定義一個用於創建對象的接口,讓子類決定具體實例話哪一個類。

2.通用實現方式

工廠方式通用實現方式類圖如下:

其中Product定義了產品的共性,是對事物的抽象,Creator為抽象創建類,即抽象工廠,具體如何創建實例由實現類決定。代碼如下所示:

Product類:

public abstract class Product {

    /**
     * 產品名稱
     */
    private String name = "";

    /**
     * 產品價格
     */
    private String price = "";

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "Product{" +
                "name='" + name + '\'' +
                ", price='" + price + '\'' +
                '}';
    }
}

Creator類:

public abstract class Creator {

    /**
     * @param c 需要具體創建的具體產品
     * @param <T> Product的實現類
     * @return 實例對象
     */
    public abstract <T extends Product> T create(Class<T> c);
}

具體的實現類:

public class ConcreteCreator extends Creator {

    @Override
    public <T extends Product> T create(Class<T> c) {

        Product product = null;
        try {

            product = (Product) Class.forName(c.getName()).newInstance();

        } catch (Exception e) {

        }
        return (T)product;
    }
}

對於工廠方法模式有許多擴展,其中之一就是當一個模塊中只需要一個工廠的時候,其實可以對上面進行簡化,直接將create方法定義為靜態方法,相當於一個util類,代碼如下:

public class ConcreteCreator {

    public static <T extends Product> T create(Class<T> c) {

        Product product = null;
        try {

            product = (Product) Class.forName(c.getName()).newInstance();

        } catch (Exception e) {

        }
        return (T)product;
    }
}

這種被稱為簡單工廠模式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM