設計模式之—2.工廠方法模式
阿新 • • 發佈:2018-08-26
eat oid com 靜態 () img clas image 簡單工廠模式
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; } }
這種被稱為簡單工廠模式。
設計模式之—2.工廠方法模式