天天看點

《大話設計模式》Python版代碼實作

一、簡單工廠模式

《大話設計模式》Python版代碼實作

模式特點:工廠根據條件産生不同功能的類。

程式執行個體:四則運算電腦,根據使用者的輸入産生相應的運算類,用這個運算類處理具體的運算。

代碼特點:c/c++中的switch...case...分支使用字典的方式代替。

     使用異常機制對除數為0的情況進行處理。

二、政策模式

《大話設計模式》Python版代碼實作

模式特點:定義算法家族并且分别封裝,它們之間可以互相替換而不影響用戶端。

程式執行個體:商場收銀軟體,需要根據不同的銷售政策方式進行收費

代碼特點:不同于同例1,這裡使用字典是為了避免關鍵字不在字典導緻bug的陷阱。

三、裝飾模式

《大話設計模式》Python版代碼實作

模式特點:動态地為對象增加額外的職責

程式執行個體:展示一個人一件一件穿衣服的過程。

代碼特點:無

四、代理模式

《大話設計模式》Python版代碼實作

模式特點:為其他對象提供一種代理以控制對這個對象的通路。

程式執行個體:同模式特點描述。

五、工廠方法模式

《大話設計模式》Python版代碼實作

模式特點:定義一個用于建立對象的接口,讓子類決定執行個體化哪一個類。這使得一個類的執行個體化延遲到其子類。

程式執行個體:基類雷鋒類,派生出學生類和志願者類,由這兩種子類完成“學雷鋒”工作。子類的建立由雷鋒工廠的對應的子類完成。

六、原型模式

《大話設計模式》Python版代碼實作

模式特點:用原型執行個體指定建立對象的種類,并且通過拷貝這些原型建立新的對象。

程式執行個體:從履歷原型,生成新的履歷

代碼特點:履歷類resume提供的clone()方法其實并不是真正的clone,隻是為已存在對象增加了一次引用。

     python為對象提供的copy子產品中的copy方法和deepcopy方法已經實作了原型模式,但由于例子的層次較淺,二者看不出差別。

七、模闆方法模式

《大話設計模式》Python版代碼實作

模式特點:定義一個操作中的算法骨架,将一些步驟延遲至子類中。

程式執行個體:考試時使用同一種考卷(父類),不同學生上交自己填寫的試卷(子類方法的實作)