工廠模式的定義:
定義一個用於建立對象的接口,讓子類決定實例化哪個類。工廠方法決定一個類的實例化延遲到其子類。ide
類圖以下:spa
通用的代碼以下:code
//抽象產品類 public abstract class Product { // 產品通用的方法..... public void method1(){ } //抽象方法 public abstract void method2(); } //--------------------------------------產品類------------------------------------------------ //具體類 1 public class ConcreteProduct1 extends Product { @Override public void method2() { // 處理具體產品1的方法 } } //具體產品類2 public class ConcreteProduct2 extends Product { @Override public void method2() { //具體產品2的方法..... } } //-----------------------------------建立類------------------------------------------ //抽象的建立類 public abstract class Creator { //經過反射建立具體的產品類... public abstract <T extends Product> T createProduct(Class<T> c); } //具體的抽象類 public class ConcreteCreator extends Creator { @Override public <T extends Product> T createProduct(Class<T> c) { //產品類.... Product product = null; if(product == null){ try { product = (Product) Class.forName(c.getName()).newInstance(); } catch (Exception e) { e.printStackTrace(); } } //返回..... return (T)product; } } //---------------------------------------------------------Client 類-------------------------------------------------------------------------- public class Client { /** * @Title: main * @Description: 工廠類的Client * @param @param args 設定文件 * @return void 返回類型 * @throws */ public static void main(String[] args) { //工廠建立類 Creator creator = new ConcreteCreator(); //生成具體產品類1 Product product = creator.createProduct(ConcreteProduct1.class); //繼續業務處理 } }
簡單工廠類對象
把類圖去掉抽象類 creator類,將ConcreteCreator 方法修改成靜態便可。blog