工廠設計模式

2021-10-09 09:02:14 字數 2771 閱讀 4382

看乙個具體的需求

​  有乙個披薩的專案,要求便於披薩種類的擴充套件,便於維護

​ 1. 披薩的種類很多 比如:greekpizza cheesepizza等

2. 披薩的生產過程有:prepare、bake、cut、box

3. 完成披薩店訂購的功能

+ 優點是比較好理解,簡單易操作

+ 缺點是違反了設計模式的ocp原則,即對擴充套件開放,對修改關閉,即當我們給類增加新功能的時候,盡量不修改**,或者盡量少修改**

+ 如果要增加乙個新的口味的披薩,則需要增加乙個類的**,並且在實際獲取新口味的披薩的時候還要增加**,這樣比較麻煩,不是我們所想要的

+ 分析: 修改**可以接收,但是如果我們在其他地方也有建立pizza的**,就意味著,也需要修改,而建立pizza的**,往往有多處

+ 思路:把建立pizza物件封裝到乙個類中,這樣我們有新的pizza種類時,只需要修改該類就可以,其他有建立到pizza物件的**就不需要修改了,這就是**簡單工廠模式**

//簡單工廠類

public class ******factory else if (ordertype.equals("cheese")) else if (ordertype.equals("pepper"))

return pizza;

} public static pizza createpizza2(string ordertype) else if (ordertype.equals("cheese")) else if (ordertype.equals("pepper"))

return pizza; }}

public class orderpizza 

public void setfactory(******factory ******factory) else

}while(true);

}// 寫乙個方法,可以獲取客戶希望訂購的披薩種類 private string gettype() catch (ioexception e)

}

public abstract class orderpizza  while (true); 

}// 寫乙個方法,可以獲取客戶希望訂購的披薩種類

private string gettype() catch (ioexception e) }}

public class bjorderpizza extends orderpizza  else if (ordertype.equals("pepper")) 

return pizza; }}

public class ldorderpizza extends orderpizza  else if (ordertype.equals("pepper")) 

return pizza; }}

介紹

使用例項

//乙個抽象工廠模式的抽象層(介面) 

public inte***ce absfactory

//這是工廠子類

public class bjfactory implements absfactory else if (ordertype.equals("pepper"))

return pizza; }

}

public class ldfactory implements absfactory  else if (ordertype.equals("pepper")) 

return pizza; }}

public class orderpizza 

private void setfactory(absfactory factory) else

} while (true);

}// 寫乙個方法,可以獲取客戶希望訂購的披薩種類

private string gettype() catch (ioexception e) }}

總結:

1) 工廠方法模式設計方案:將披薩專案的例項化功能抽象成抽象方法,在不同的口味點餐子類中具體實現。

2) 工廠方法模式:定義了乙個建立物件的抽象方法,由子類決定要例項化的類。工廠方法模式將物件的例項 化推遲到子類。

介紹

看到以上的**了麼?上面的邏輯就是接收使用者輸入的種類type資訊,然後在******factory類中返回我們想要的pizza物件,這就是乙個簡單的工廠類,當我們在需要這個類的時候就可以直接呼叫工廠類,傳入type引數就能拿到相應的類,是不是很方便麼?這就是使用工廠設計模式的好處!

簡單工廠模式屬於建立型模式,是工廠模式的一種,簡單工廠模式是由乙個工廠物件決定建立哪一種產品類的例項,簡單工廠模式是工廠模式家族中最簡單實用的模式

簡單工廠模式,定義了乙個建立物件的類,由這個類來封裝例項化物件的行為(**)

在軟體開發中,當我們會用到大量的建立某種、某類或者某批物件時,就會用到工廠模式

改進思路分析

傳統方式的優缺點

我們使用傳統方式去建立,就是使用乙個基礎的pizza父類,後面的擴充套件類繼承其類,然後重寫其中的方法

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...

設計模式 工廠模式(簡單工廠)

一 簡單工廠 定義 簡單工廠模式 factory pattern 屬於類的創新型模式,又叫靜態工廠方法模式 static factorymethod pattern 是通過專門定義乙個類來負責建立其他類的例項,被建立的例項通常都具有共同的父類。特點 工廠類直接實現,乙個產品介面,乙個工廠類可以產生多...