下面考慮《大話設計模式》中的乙個例子:
題目:用任意一種物件導向語言實現乙個計算器控制台程式。要求輸入兩個數和運算符號,得到結果。
程式應該做到:(1)可維護;(2)可復用;(3)可擴充套件;(4)靈活性好。
可維護:就是說**一處更改,不能產生連鎖反應,不能影響其他地方。
可復用:儘量減少重複性**。
可擴充套件:如果要擴充套件新的功能、新的業務,則只需要增加新的類就好了,不對已有的類和邏輯產生影響。插拔式的應用。
物件導向要點:
物件導向三大特性:封裝、繼承、多型。
通過封裝、繼承、多型把程式耦合降低。
業務邏輯和介面邏輯分開。
1#coding=utf-82#
簡單工廠模式的介紹及**例項3#
舉個加減乘除的例子4#
定義乙個父類,預留介面
5class
operation(object):
6def
__init__(self, num1 = 0, num2 =0):
7 self.num1 =num1
8 self.num2 =num2910
#這是乙個預留的統一的介面,子類可以根據自己的情況呼叫這個介面,實現自己的特殊功能
11def
get_result(self):
12pass
1314
15class
add(operation):
16def
get_result(self):
17return self.num1 +self.num2
1819
class
minus(operation):
20def
get_result(self):
21return self.num1 -self.num2
2223
class
multi(operation):
24def
get_result(self):
25return self.num1 *self.num2
2627
class
divide(operation):
28def
get_result(self):
29try:30
return self.num1/self.num2
31except:32
return
'被除數不能為0,請重新輸入'33
34#這個就是乙個工廠,根據使用者的輸入選擇來呼叫相應的類去建立例項完成任務
35class
optionfactory():
36def
choose(self,op):
37if op == '+'
:38return
add()
39if op == '-'
:40return
minus()
41if op == '*'
:42return
multi()
43if op == '/'
:44return
divide()
4546
#根據使用者輸入來決定呼叫哪個類,這就是工廠類的作用
47if
__name__ == '
__main__':
48 ch = ''
49while
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
57print
'the result is:
', optype.get_result()
58try
:59 ch =str(raw_input())
60except
:61 ch = ''
原創 設計模式 簡單工廠模式
從設計模式的型別上來說,簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法 static factory method 模式,但不屬於23種 gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實...
工廠模式比簡單工廠模式優越在哪?(原創)
關於筆者對簡單工廠模式的分析,可以參考 簡單工廠模式的最大缺點,在於 新增乙個新的功能類時,簡單工廠類需要相應地新增其構造過程。雖然運用某些語言本身的反射和自省機制,可以省卻一些改變。但當建立過程越發複雜之後,比如在新類建立之前,需要很多準備工作,而且不同的類,準備過程各個不同。此時,就沒有辦法再借...
Python簡單工廠模式
簡單工廠屬於類的創新性模式,又叫靜態工廠方法模式。是專門通過定義乙個類來負責建立其他類的例項,被建立的例項通常都具有相同的父類。模式特點 工廠工具條件產生不同功能的類。簡單工廠的組成要素 負責具體產品物件的建立工作,是該模式的核心。當場景比較負責的時候,可能需要 乙個工廠類來負責產品的建立。以及產品...