設計模式 簡單工廠模式(學習筆記)

2021-09-06 15:48:15 字數 2207 閱讀 3745

簡單工廠事實上不是乙個設計模式,比較像一種程式設計習慣!

首先看一下**,從**中理解這個程式設計習慣。

舉個做披薩的樣例:

pizza類**:

public inte***ce pizza
詳細的披薩cheesepizza:

public class cheesepizza implements pizza 

@override

public void box()

@override

public void bake()

@override

public void cut()

}

詳細的披薩clampizza:

public class clampizza implements pizza 

@override

public void box()

@override

public void bake()

@override

public void cut()

}

簡單工廠累:

public class ******pizzafactory else if (tpye.equals("clam"))

return pizza;

}}

披薩訂單類pizzastore:

public  class pizzastore 

protected final pizza orderpizza(string type)

}

測試**:

public static void main(string args)

列印結果:

cheesepizza:pripare()

cheesepizza:bake()

cheesepizza:cut()

cheesepizza:box()

clampizza:pripare()

clampizza:bake()

clampizza:cut()

clampizza:box()

從**中能夠看出,建立物件之前,事實上是把物件的共同操作方法抽象出來,為以後物件的擴充套件做準備,這個介面能夠是介面類或者是抽象類,由詳細的子類實現或者繼承。可是對於簡單工廠裡的方法,僅僅確定建立哪個詳細的物件。

來看乙個比較通用的工廠模式框架**:

抽象產品類:

public abstract class product ;

public abstract void method2();

}

詳細產品類

public class concreteproduct1 implements product

}public class concreteproduct2 implements product

}

抽象工廠類:

public abstract  class creator
詳細工廠類:

public class concretefactory extends creator  catch (instantiationexception e)  catch (illegalacces***ception e)  catch (classnotfoundexception e) 

return (t) product;

}}

詳細**測試類:

creator creator=new concretefactory();

product product= creator.createproducts(concreteproduct2.class);

假設乙個模組僅須要乙個工廠類,沒有必要把它生產出來,使用靜態方法就能夠啦,把上述的抽象工廠類直接替換為詳細工廠類,並使用靜態方法就能夠,這樣就變為簡單工廠模式,或者是靜態工廠模式

寫的不好,希望多提意見,共同進步學習!謝謝

設計模式 學習筆記 簡單工廠模式

從接觸程式設計到現在已經很久了,從最早的面向過程到物件導向,後來演算法的學習,但是一直沒有接觸設計模式。前幾周,我申請的 大話設計模式 採購下來了,剛好藉著這個讀書的機會,把自己的學習筆記記錄下來,希望以後自己寫專案的時候可以應用到這些模式思想。1 運算的基類,所有的運算都必須繼承自這個類 基類,所...

設計模式學習筆記 簡單工廠模式

背景 簡單工廠模式是很多程式設計師學習的第乙個設計模式,因為其不但原理簡單而且易於上手,在日常工作的 中也常有體現。今天分享乙個基於實現 加 減 乘 除 計算器的需求基於簡單工廠模式來實現。錯誤示範 在學習簡單工廠模式之前,遇到這種需求我是這樣實現的 public static double cal...

設計模式學習筆記之簡單工廠模式

所謂簡單工廠模式,即提供建立物件的介面,而具體建立什麼物件,由客戶端決定。比如,我們有ibird這樣乙個抽象類,有chicken和duck這兩個類實現ibird。那麼,如果我們想靈活的建立chicken或ibird,那麼就需要用到簡單工廠模式。factory根據接收到的字串,決定返回的物件。客戶端用...