一、概念
簡單工廠模式(****** factory pattern)屬於建立型模式,又叫做靜態工廠方法模式(static factorymethod pattern),可是不屬於23gof設計模式之中的乙個。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。
二、uml圖
簡單工廠主要分為三個角色:工廠(creator)角色、抽象產品(product)角色、詳細產品(concrete product)角色。
工廠角色:該模式核心,它負責建立全部例項的內部邏輯。工廠類能夠被外界直接呼叫。建立所須要的產品。
抽象產品角色:所建立的全部物件的父類,它負責描寫敘述全部例項所共同擁有的公共介面。
詳細產品:該模式的建立目標,全部建立的物件都是充當這個角色的某個詳細類的例項。
三、例項解析
下面是我自己想的乙個簡單工廠模式場景。假設有不妥的地方還請大家指出。
我做的是乙個簡易的網咖收費系統。cashfactory充當的是工廠的角色,它會告訴我們怎樣建立白天收費方式和晚上收費方式,須要例項化哪些物件,須要什麼引數;詳細產品 白天、晚上 收費方法。通過override,實現了從基類繼承成員的新實現。網咖收費抽象類 為白天和晚上 收費方式的父類,描寫敘述了兩者的公共介面。
**例如以下:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows.forms;
//視窗啟動的時候載入收費方式,是晚上收費,還是白天收費
private void form1_load(object sender, eventargs e)
);//在時間段的選擇框裡載入收費選項 白天。晚上
cbxtimetype.selectedindex = 0;//索引從0開始,從下往上依次遞增
}//單擊開始button之後,收費系統開始計時
private void btnok_click(object sender, eventargs e)
//單擊停止button後,收費系統停止計時
private void btnstop_click(object sender, eventargs e)
//單擊結賬button,系統開始結賬
private void btncharge_click(object sender, eventargs e)
}//建立乙個網咖現金收取的抽象類
abstract class barcharge
//網咖的收費機制分為白天和晚上收費兩種情況
class day : barcharge //白天收費情況
}class night : barcharge //晚上收費情況
//晚上收費=晚上收費*優惠率
public override double acceptcash(double money)
}//現金收費工廠類
class cashfactory
return bc;}}
}
執行結果:
簡單工廠攻克了物件的建立問題,免除了直接建立物件的步驟,實現了責任的切割。
可是因為工廠本身包含了全部的收費方式。每次維護或者擴充套件收費方式都要修改這個工廠,以至於**須要又一次編譯部署。這樣違背了開放-封閉原則。
四、感受
走別人的的路,不如自己 to do (不如的意思是更)。
先敲書上的樣例,第一遍或許不懂,第二遍就清晰非常多。第三遍就認為自己能寫點東西出來。不要總是認為自己看不懂,學不好,僅僅有先學了才幹更好。沒有之前的8個饅頭,就沒有第9個饅頭的飽(好撐啊~~)。
大話設計模式 簡單工廠模式
學習c 1年的菜鳥,開始學習設計模式,學過了留下痕跡,歡迎一起談論學習。該模式總結 利用多型例項化不同的物件。include stdafx.h include include using namespace std class operate operate void setnumber1 int ...
大話設計模式 簡單工廠模式
最近在學習 大話設計模式 這本書,此本生動易動,其中有一些例子,我把 分寫如下。大話設計模式 無錯便是優?簡單工廠模式 下面以 乙個計算器的實現 operation運算類 public abstract class operation public void setnumbera public do...
大話設計模式 簡單工廠模式
乙個 概念 簡單工廠模式 factory pattern 它屬於建立模式,又稱靜態工廠方法模式 static factorymethod pattern 可是不屬於23gof設計模式之中的乙個。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。二 uml圖 簡單工廠主要分為三個角色 工廠 c...