python支持索引訪問,python設計模式(二十二):策略模式

 2023-10-08 阅读 32 评论 0

摘要:策略模式,讓一個類的行為或其算法可以在運行時更改,策略是讓實例化對象動態的更改自身的某些方法使用的是types.MethodType綁定。 說起策略的動態更改方法,就不得不對比一下元類的動態增加方法,元類是類的抽象,它負責一個抽象類創建、實例

策略模式,讓一個類的行為或其算法可以在運行時更改,策略是讓實例化對象動態的更改自身的某些方法使用的是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、如果一個對象有很多的行為,如果不用恰當的模式,這些行為就只好使用多重的條件選擇語句來實現。


2019-03-17-22_10_45.png


版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/5/130109.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息