策略模式,讓一個類的行為或其算法可以在運行時更改,策略是讓實例化對象動態的更改自身的某些方法使用的是types.MethodType綁定。
說起策略的動態更改方法,就不得不對比一下元類的動態增加方法,元類是類的抽象,它負責一個抽象類創建、實例化,是通過type函數來綁定方法。
假設這樣的一個應用場景:一個人旅游,在不同的國家說不通的語言。
python支持索引訪問、示例code:
import?types
class?People:
def?__init__(self,?func=None):
if?func:
self.speak?=?types.MethodType(func,?self)
def?speak(self):
print("說中文")
def?speak_english(self):
print('說英語')
def?speak_german(self):
print('說德語')
if?__name__?==?'__main__':
test1?=?People()
test2?=?People(speak_english)
test3?=?People(speak_german)
[func.speak()?for?func?in?[test1,?test2,?test3]]
說中文
說英語
說德語
使用場景:?1、如果在一個系統里面有許多類,它們之間的區別僅在于它們的行為,那么使用策略模式可以動態地讓一個對象在許多行為中選擇一種行為。 2、一個系統需要動態地在幾種算法中選擇一種。 3、如果一個對象有很多的行為,如果不用恰當的模式,這些行為就只好使用多重的條件選擇語句來實現。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态