摘要:策略模式簡(jiǎn)單說(shuō)和小時(shí)候我們玩的玩具差不多,一堆零部件通過(guò)不同的拼湊構(gòu)成幾個(gè)不同的機(jī)器人。
策略模式簡(jiǎn)單說(shuō)和小時(shí)候我們玩的玩具差不多,一堆零部件通過(guò)不同的拼湊構(gòu)成幾個(gè)不同的機(jī)器人。
1.舉個(gè)栗子我們買(mǎi)了一個(gè)機(jī)器人,同時(shí)這個(gè)機(jī)器人配了三把武器,三把武器可以替換使用
2.Show in Code在實(shí)例中,我們先創(chuàng)造一個(gè)人,天生自帶人手
class People: def __init__(self, hand = None): self.name = "人手" if hand is not None: self.execute = types.MethodType(hand, self) def execute(self): #安裝部件的位置 print(self.name)
現(xiàn)在我們?cè)俳o他創(chuàng)建兩個(gè)備用的手,一個(gè)pighand、一個(gè)cathand
//創(chuàng)造豬手 def pighand(self): print(self.name + " 用豬手") print("拱你") //創(chuàng)造貓爪 def cathand(self): print(self.name + " 用貓爪") print("抓你")3.完整代碼
import types //創(chuàng)造一個(gè)人 class People: def __init__(self, hand = None): self.name = "人手" if hand is not None: self.execute = types.MethodType(hand, self) def execute(self): #安裝部件的位置 print(self.name) //創(chuàng)造豬手 def pighand(self): print(self.name + " 用豬手") print("拱你") //創(chuàng)造貓爪 def cathand(self): print(self.name + " 用貓爪") print("抓你") if __name__ == "__main__": hand0 = People() #用豬手替換人手 hand1 = People(pighand) hand1.name = "豬手" #用貓爪替換ren"hsou hand2 = People(cathand) hand2.name = "貓爪" hand0.execute() hand1.execute() hand2.execute()4.總結(jié)
將相同提取,將變化拆分
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44782.html
摘要:本篇主要講述中使用函數(shù)來(lái)實(shí)現(xiàn)策略模式和命令模式,最后總結(jié)出這種做法背后的思想。 《流暢的Python》筆記。本篇主要講述Python中使用函數(shù)來(lái)實(shí)現(xiàn)策略模式和命令模式,最后總結(jié)出這種做法背后的思想。 1. 重構(gòu)策略模式 策略模式如果用面向?qū)ο蟮乃枷雭?lái)簡(jiǎn)單解釋的話,其實(shí)就是多態(tài)。父類(lèi)指向子類(lèi),根據(jù)子類(lèi)對(duì)同一方法的不同重寫(xiě),得到不同結(jié)果。 1.1 經(jīng)典的策略模式 下圖是經(jīng)典的策略模式的U...
摘要:策略模式原文地址更多設(shè)計(jì)模式系列教程更多免費(fèi)教程項(xiàng)目地址作者按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語(yǔ)言實(shí)現(xiàn)。 策略模式原文地址 更多《設(shè)計(jì)模式系列教程》 更多免費(fèi)教程 0. 項(xiàng)目地址 作者按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(靠這吃飯)和python(純粹喜歡)兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種...
摘要:策略模式原文地址更多設(shè)計(jì)模式系列教程更多免費(fèi)教程項(xiàng)目地址作者按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用靠這吃飯和純粹喜歡兩種語(yǔ)言實(shí)現(xiàn)。 策略模式原文地址 更多《設(shè)計(jì)模式系列教程》 更多免費(fèi)教程 0. 項(xiàng)目地址 作者按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript(靠這吃飯)和python(純粹喜歡)兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種...
摘要:在復(fù)雜的情況下,需要具體策略維護(hù)內(nèi)部狀態(tài)時(shí),可能需要把策略和享元模式結(jié)合起來(lái)。函數(shù)比用戶(hù)定義的類(lèi)的實(shí)例輕量,而且無(wú)需使用享元模式,因?yàn)楦鱾€(gè)策略函數(shù)在編譯模塊時(shí)只會(huì)創(chuàng)建一次。 一等函數(shù)實(shí)現(xiàn)設(shè)計(jì)模式 經(jīng)典的策略模式定義 定義一系列算法,把它們一一封裝起來(lái),并且使它們可以相互替換。本模式使得算法可以獨(dú)立于使用它的客戶(hù)而變化。 案例 假如一個(gè)網(wǎng)店制定了下述折扣規(guī)則。 有 1000 或以上積分...
摘要:前言合理使用作為一等對(duì)象的函數(shù),可以使某種設(shè)計(jì)模式得以簡(jiǎn)化。本例中這個(gè)抽象類(lèi)扮演這個(gè)角色。此外,策略實(shí)例沒(méi)有狀態(tài)實(shí)例屬性使用函數(shù)代替抽象類(lèi),每個(gè)策略都是函數(shù),不必實(shí)例化,拿來(lái)即用。 前言 合理使用作為一等對(duì)象的函數(shù),可以使某種設(shè)計(jì)模式得以簡(jiǎn)化。 關(guān)于策略 定義一系列算法,把它們一一封裝起來(lái),并且使它們可以相互替換。 一個(gè)策略模式的示例 規(guī)則 1 有1000或以上積分的客戶(hù),每個(gè)訂單享...
閱讀 667·2019-08-30 15:44
閱讀 1387·2019-08-30 11:02
閱讀 2996·2019-08-29 18:42
閱讀 3517·2019-08-29 16:16
閱讀 1725·2019-08-26 13:55
閱讀 1778·2019-08-26 13:45
閱讀 2393·2019-08-26 11:43
閱讀 3257·2019-08-26 10:32