《大話設計模式》python實現 簡單工廠模式

2021-10-02 10:25:07 字數 1926 閱讀 9547

基於python3.6實現

最近開始看《大話設計模式》,由於平常用python,所以把**改寫了一下,也是心血來潮,不知道能不能更下去,慢慢來吧。

# 簡單工廠模式

class

operation

(object):

pass

class

opadd

(operation)

:def

getresult

(self)

:return self.numa + self.numb

class

opsub

(operation)

:def

getresult

(self)

:return self.numa - self.numb

class

opmul

(operation)

:def

getresult

(self)

:return self.numa * self.numb

class

opdiv

(operation)

:def

getresult

(self)

:try

: result = self.numa / self.numb

return result

except

:print

("valueerror: divided by zero."

)# raise valueerror("divided by zero.")

class

opundef

(operation)

:def

getresult

(self)

:print

("operationerror: undefined operation."

)# raise valueerror("undefined operation.")

class

operationfactory

(object):

def__init__

(self)

: self.operation =

self.operation[

"+"]

= opadd();

self.operation[

"-"]

= opsub();

self.operation[

"*"]

= opmul();

self.operation[

"/"]

= opdiv();

defcreateoperation

(self, op)

:if op in self.operation:

opp = self.operation[op]

else

: opp = opundef(

)return opp

if __name__ ==

"__main__"

: ope =

input

("operator: "

) a =

input

("numbera: "

) b =

input

("numberb: "

) oper = operationfactory(

).createoperation(ope)

oper.numa =

int(a)

oper.numb =

int(b)

print

(oper.getresult(

))

大話設計模式Python實現 策略模式

策略模式 strategy pattern 它定義了演算法家族,分別封裝起來,讓他們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶.下面是乙個商場活動的實現 1 usr bin env python2 coding utf 8 34 author andy 5 6 大話設計模式 ...

大話設計模式Python實現 介面卡模式

介面卡模式 adapter pattern 將乙個類的介面轉換成為客戶希望的另外乙個介面.下面是乙個介面卡模式的demo 1 usr bin env python2 coding utf 8 34 author andy 5 6 大話設計模式 7設計模式 介面卡模式 8介面卡模式 adapter p...

大話設計模式策略模式c 實現

其他二十三種設計模式 include using namespace std 策略模式 strategy 定義演算法家族,分別封裝起來,讓演算法之間可以相互替換,且不會影響到使用演算法的client客戶 抽象收費策略 class cashsuper 正常收費類 class cashnormal pu...