国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python版簡單工廠模式

2020-02-16 10:23:55
字體:
來源:轉載
供稿:網友

什么是簡單工廠模式

工廠模式有一種非常形象的描述,建立對象的類就如一個工廠,而需要被建立的對象就是一個個產品;在工廠中加工產品,使用產品的人,不用在乎產品是如何生產出來的。從軟件開發的角度來說,這樣就有效的降低了模塊之間的耦合。
簡單工廠的作用是實例化對象,而不需要客戶了解這個對象屬于哪個具體的子類。簡單工廠實例化的類具有相同的接口或者基類,在子類比較固定并不需要擴展時,可以使用簡單工廠。如數據庫生產工廠就是簡單工廠的一個應用
采用簡單工廠的優點是可以使用戶根據參數獲得對應的類實例,避免了直接實例化類,降低了耦合性;缺點是可實例化的類型在編譯期間已經被確定,如果增加新類 型,則需要修改工廠,不符合OCP(開閉原則)的原則。簡單工廠需要知道所有要生成的類型,當子類過多或者子類層次過多時不適合使用。

簡單工廠模式實現

下面考慮《大話設計模式》中的一個例子:
題目:用任意一種面向對象語言實現一個計算器控制臺程序。要求輸入兩個數和運算符號,得到結果。

題目分析:

程序應該做到:(1)可維護;(2)可復用;(3)可擴展;(4)靈活性好。
可維護:就是說代碼一處更改,不能產生連鎖反應,不能影響其他地方。
可復用:盡量減少重復性代碼。
可擴展:如果要擴展新的功能、新的業務,則只需要增加新的類就好了,不對已有的類和邏輯產生影響。插拔式的應用。
面向對象要點:
面向對象三大特性:封裝、繼承、多態。
通過封裝、繼承、多態把程序耦合降低。
業務邏輯和界面邏輯分開。

類的結構圖:


代碼實現:

1. 首先,搞清楚業務中容易發生變化的部分。在本應用中,要求計算兩個數的運算結果,那么要進行什么樣的運算,這就是一個容易發生變化的部分。例如,我們現在只想實現加減乘除運算,后期又想增加開根或者求余運算。那么如何應對這種需求帶來的變化。在程序設計的時候就應該考慮到程序的可維護性、可擴展性、代碼的可復用性、靈活性等等。 

2. 例如現在這個運算器只有加減乘除四種運算。首先建一個Operation類,這個類是各種具體運算類(加減乘除)的父類,主要是接受用戶輸入的數值。該類如下:

class Operation():   def __init__(self,NumberA=0,NumberB=0):     self.NumberA = NumberA     self.NumberB = NumberB    def GetResult(self):     pass 

3. 然后是具體的運算類:Add、Sub、Mul、Div。他們都繼承了Operation類,并且重寫了getResult()方法。這樣就可以用多態性降低不同業務邏輯的耦合度,修改任何一種運算類都不會影響其他的運算類。具體類的代碼如下:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 苍山县| 且末县| 赤壁市| 宣化县| 蓬安县| 蓝山县| 香河县| 浏阳市| 大连市| 泰州市| 云阳县| 临颍县| 遂宁市| 文登市| 长泰县| 昔阳县| 通江县| 美姑县| 大荔县| 东宁县| 道孚县| 金秀| 商丘市| 邵阳市| 贵定县| 深州市| 临漳县| 通化县| 白玉县| 文水县| 闽清县| 五家渠市| 桐乡市| 临猗县| 宁晋县| 张家界市| 河津市| 新丰县| 墨竹工卡县| 建水县| 周至县|