#理解:
#工廠模式:例項化延遲到子類
#例子:產品為一種運算
#缺點:使用類作為代價,且factory對修改不封閉,對於每加乙個product就要修改factory,當然可以使用配置檔案,這樣就能對factory封閉。
class product_opt:
def getresult(self):
pass
class product_add(product_opt):
def getresult(self):
return self.num1+self.num2
class product_sub(product_opt):
def getresult(self):
return self.num1-self.num2
class product_err(product_opt):
def getresult(self):
print "error"
return 0
class factory:
operation={}
operation["+"]=product_add();
operation["-"]=product_sub();
def createproduct(self,ch):
if ch in self.operation:
op=self.operation[ch]
else:
op=product_err();
return op
if __name__=="__main__":
num1=input("a:")
op=raw_input("operation:")
num2=input("b:")
factory=factory();
product=factory.createproduct(op)
product.num1=num1
product.num2=num2
print product.getresult()
執行結果,如圖:
23種設計模式之 工廠設計模式
前言 記得大二時上過一門設計模式的課,當時聽的那叫乙個懵逼。如今工作半年了,想把東西再撿起來,順便記錄一下。工廠模式是平時接觸的多一點的,就從工廠模式開始吧 什麼是工廠設計模式?工廠設計模式,顧名思義,就是用來生產物件的,是一種建立型設計模式。在物件導向語言中,萬物皆物件,這些物件都需要建立,如果建...
23種設計模式之命令模式
定義 將乙個請求封裝成乙個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能。型別 行為類模式 類圖 顧名思義,命令模式就是對命令的封裝,首先來看一下命令模式類圖中的基本結構 以上三個類的作用應該是比較好理解的,下面我們重點說一下invoker類和r...
23種設計模式之策略模式
定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式,對照類圖可以看到,策略模...