1. 程式人生 > >python簡單工廠模式解析

python簡單工廠模式解析

用戶 維護 clas 只需要 耦合 分析 計算 根據 while

下面考慮《大話設計模式》中的一個例子:

題目:用任意一種面向對象語言實現一個計算器控制臺程序。要求輸入兩個數和運算符號,得到結果。

題目分析:

程序應該做到:(1)可維護;(2)可復用;(3)可擴展;(4)靈活性好。
可維護:就是說代碼一處更改,不能產生連鎖反應,不能影響其他地方。
可復用:盡量減少重復性代碼。
可擴展:如果要擴展新的功能、新的業務,則只需要增加新的類就好了,不對已有的類和邏輯產生影響。插拔式的應用。

面向對象要點:
面向對象三大特性:封裝、繼承、多態。
通過封裝、繼承、多態把程序耦合降低。
業務邏輯和界面邏輯分開。

 1 # coding=utf-8
 2 # 簡單工廠模式的介紹及代碼實例
3 # 舉個加減乘除的例子 4 # 定義一個父類,預留接口 5 class Operation(object): 6 def __init__(self, num1 = 0, num2 = 0): 7 self.num1 = num1 8 self.num2 = num2 9 10 # 這是一個預留的統一的接口,子類可以根據自己的情況調用這個接口,實現自己的特殊功能 11 def get_result(self): 12 pass 13 14 15 class Add(Operation): 16 def
get_result(self): 17 return self.num1 + self.num2 18 19 class Minus(Operation): 20 def get_result(self): 21 return self.num1 - self.num2 22 23 class Multi(Operation): 24 def get_result(self): 25 return self.num1 * self.num2 26 27 class Divide(Operation): 28 def
get_result(self): 29 try: 30 return self.num1/self.num2 31 except: 32 return 被除數不能為0,請重新輸入 33 34 # 這個就是一個工廠,根據用戶的輸入選擇來調用相應的類去創建實例完成任務 35 class OptionFactory(): 36 def choose(self,op): 37 if op == +: 38 return Add() 39 if op == -: 40 return Minus() 41 if op == *: 42 return Multi() 43 if op == /: 44 return Divide() 45 46 # 根據用戶輸入來決定調用哪個類,這就是工廠類的作用 47 if __name__ == __main__: 48 ch = ‘‘ 49 while not ch == q: 50 num1 = eval(raw_input(Please input number1: )) 51 op = str(raw_input(Please input the operation: )) 52 num2 = eval(raw_input(Please input number2: )) 53 OPFactory = OptionFactory() 54 OPType = OPFactory.choose(op) 55 OPType.num1 = num1 56 OPType.num2 = num2 57 print The result is:, OPType.get_result() 58 try: 59 ch = str(raw_input()) 60 except: 61 ch = ‘‘

python簡單工廠模式解析