您好,登錄后才能下訂單哦!
本文實(shí)例講述了Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式。分享給大家供大家參考,具體如下:
簡(jiǎn)單工廠模式(Simple Factory Pattern):是通過專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類.
下面使用簡(jiǎn)單工廠模式實(shí)現(xiàn)一個(gè)簡(jiǎn)單的四則運(yùn)算
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'Andy' ''' 大話設(shè)計(jì)模式 用任意一種面向?qū)ο笳Z言實(shí)現(xiàn)一個(gè)計(jì)算器控制臺(tái)程序。要求輸入兩個(gè)數(shù)和運(yùn)算符號(hào),得到結(jié)果 設(shè)計(jì)模式——簡(jiǎn)單工廠模式 簡(jiǎn)單工廠模式(Simple Factory Pattern):是通過專門定義一個(gè)類來負(fù)責(zé)創(chuàng)建其他類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類。 ''' class Operation(object): ''' 四則運(yùn)算的父類,接收用戶輸入的數(shù)值 ''' def __init__(self, number1=0, number2=0): self.num1 = number1 self.num2 = number2 def GetResult(self): pass pass #加法運(yùn)算類 class OperationAdd(Operation): def GetResult(self): return self.num1 + self.num2 #減法運(yùn)算類 class OperationSub(Operation): def GetResult(self): return self.num1 - self.num2 #乘法運(yùn)算類 class OperationMul(Operation): def GetResult(self): return self.num1 * self.num2 #除法運(yùn)算類 class OperationDiv(Operation): def GetResult(self): if self.num2 == 0: return '除數(shù)不能為0 ' return 1.0*self.num1 / self.num2 #其他操作符類 class OperationUndef(Operation): def GetResult(self): return '操作符錯(cuò)誤' #簡(jiǎn)單工廠類 class OperationFactory(object): def choose_oper(self,ch): if ch == '+': return OperationAdd() elif ch == '-': return OperationSub() elif ch == '*': return OperationMul() elif ch == '/': return OperationDiv() else: return OperationUndef() if __name__ == "__main__": ch = '' while not ch == 'q': num1 = input('請(qǐng)輸入第一個(gè)數(shù)值: ') oper = str(raw_input('請(qǐng)輸入一個(gè)四則運(yùn)算符: ')) num2 = input('請(qǐng)輸入第二個(gè)數(shù)值: ') # Operation(num1,num2) OF = OperationFactory() oper_obj = OF.choose_oper(oper) oper_obj.num1 = num1 oper_obj.num2 = num2 print '運(yùn)算結(jié)果為: ',oper_obj.GetResult()
運(yùn)行結(jié)果:
請(qǐng)輸入第一個(gè)數(shù)值: 51
請(qǐng)輸入一個(gè)四則運(yùn)算符: -
請(qǐng)輸入第二個(gè)數(shù)值: 15
運(yùn)算結(jié)果為: 36
這幾個(gè)類的結(jié)構(gòu)圖如下:
專門定義一個(gè)Operation類作為父類,加減乘除運(yùn)算類繼承Operation類,OperationFactory類用來決定什么時(shí)候創(chuàng)建對(duì)應(yīng)的類
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python Socket編程技巧總結(jié)》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門與進(jìn)階經(jīng)典教程》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。