成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

設(shè)計(jì)模式(python實(shí)現(xiàn)):策略模式

seanlook / 467人閱讀

摘要:策略模式簡(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

相關(guān)文章

  • Python學(xué)習(xí)之路25-使用一等函數(shù)實(shí)現(xiàn)設(shè)計(jì)模式

    摘要:本篇主要講述中使用函數(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...

    econi 評(píng)論0 收藏0
  • 每天一個(gè)設(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ì)模式都有多種...

    gxyz 評(píng)論0 收藏0
  • 每天一個(gè)設(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ì)模式都有多種...

    EsgynChina 評(píng)論0 收藏0
  • 流暢的python讀書(shū)筆記-第六章-使用一等函數(shù)實(shí)現(xiàn)設(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 或以上積分...

    cnsworder 評(píng)論0 收藏0
  • Python 用函數(shù)重構(gòu)經(jīng)典策略模式

    摘要:前言合理使用作為一等對(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è)訂單享...

    chenjiang3 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

seanlook

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<