策略模式(python)

2021-07-25 20:08:34 字數 1448 閱讀 3226

"""

策略模式:在不同的時間使用不同的規則就可以考慮策略模式

定義了不同的演算法,他們之間可以相互替換。此模式讓演算法的變化不會影響到演算法的使用

實現相同的功能,有相同的呼叫方式,實現方式不同

此**是策略模式和簡單工廠模式的結合

"""class

parentstrategy

(object):

def__init__

(self, a, b):

self.a = a

self.b = b

pass

defdo_something

(self):

pass

class

strategyadd

(parentstrategy):

def__init__

(self, a, b):

super(strategyadd, self).__init__(a, b)

pass

defdo_something

(self):

print(self.a + self.b)

class

strategyjian

(parentstrategy):

def__init__

(self, a, b):

super(strategyjian, self).__init__(a, b)

defdo_something

(self):

print(self.a - self.b)

class

strategycontext

(object):

def__init__

(self):

self.strategy_class = none

defcreate_strategy

(self, strategy, a, b):

if strategy == "+":

self.strategy_class = strategyadd(a, b)

elif strategy == "-":

self.strategy_class = strategyjian(a, b)

defdo_things

(self):

if self.strategy_class:

self.strategy_class.do_something()

if __name__ == '__main__':

context = strategycontext()

context.create_strategy("+", 5, 6)

context.do_things()

context.create_strategy("-", 5, 6)

context.do_things()

設計模式 python實現 策略模式

策略模式簡單說和小時候我們玩的玩具差不多,一堆零部件通過不同的拼湊構成幾個不同的機械人。我們買了乙個機械人,同時這個機械人配了三把 三把 可以替換使用 在例項中,我們先創造乙個人,天生自帶人手 class people def init self,hand none self.name 人手 if ...

策略模式之Python實現

策略模式 定義了乙個演算法家族,將多種演算法分別封裝起來,讓它們之間可以相互替換。策略模式讓演算法的變化,不會影響到使用演算法的客戶 print 演算法a實現 class concretestrategyb strategy def algorithminte ce self print 演算法b實...

設計模式python實現 02 策略模式

面對演算法時常變動 策略模式 author panky import abc class cashsuper metaclass abc.abcmeta 現金收費抽象類 abc.abstractmethod def accept cash self,money pass class cashnorm...