<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        舉例講解Python設(shè)計模式編程的代理模式與抽象工廠模式

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 14:35:09
        文檔

        舉例講解Python設(shè)計模式編程的代理模式與抽象工廠模式

        舉例講解Python設(shè)計模式編程的代理模式與抽象工廠模式:代理模式 Proxy模式是一種常用的設(shè)計模式,它主要用來通過一個對象(比如B)給一個對象(比如A) 提供'代理'的方式方式訪問。比如一個對象不方便直接引用,代理就在這個對象和訪問者之間做了中介 你先設(shè)想:一個對象提供rgb三種顏色值,我想獲得一個對象的rgb
        推薦度:
        導(dǎo)讀舉例講解Python設(shè)計模式編程的代理模式與抽象工廠模式:代理模式 Proxy模式是一種常用的設(shè)計模式,它主要用來通過一個對象(比如B)給一個對象(比如A) 提供'代理'的方式方式訪問。比如一個對象不方便直接引用,代理就在這個對象和訪問者之間做了中介 你先設(shè)想:一個對象提供rgb三種顏色值,我想獲得一個對象的rgb

        代理模式
        Proxy模式是一種常用的設(shè)計模式,它主要用來通過一個對象(比如B)給一個對象(比如A) 提供'代理'的方式方式訪問。比如一個對象不方便直接引用,代理就在這個對象和訪問者之間做了中介

        你先設(shè)想:一個對象提供rgb三種顏色值,我想獲得一個對象的rgb三種顏色,但是我不想讓你獲得藍(lán)色屬性,怎么辦?

        class Proxy(object):
         def __init__(self, subject):
         self.__subject = subject
         # 代理其實本質(zhì)上就是屬性的委托
         def __getattr__(self, name):
         return getattr(self.__subject, name)
        
        class RGB:
         def __init__(self, red, green, blue):
         self.__red = red
         self.__green = green
         self.__blue = blue
         def Red(self):
         return self.__red
         def Green(self):
         return self.__green
         def Blue(self):
         return self.__blue
        
        class NoBlueProxy(Proxy):
         # 我在這個子代理類攔截了blue的訪問,這樣就不會返回被代理的類的Blue屬性
         def Blue(self):
         return 0
        
        if __name__ == '__main__':
         rgb = RGB(100, 192, 240)
         print rgb.Red()
         proxy = Proxy(rgb)
         print proxy.Green()
         noblue = NoBlueProxy(rgb)
         print noblue.Green()
         print noblue.Blue()
        
        

        抽象工廠模式
        和簡單工廠/工廠方法不同,抽象工廠可能最好理解,舉個例子:
        比如2個動物,貓和狗,他們都有speak和eat的function,但是很明顯他們執(zhí)行的結(jié)果是不同的 有個'工廠'(抽象工廠里面一個類型就是一個工廠,這點(diǎn)和其他模式的不同)專門幫助我們找到對應(yīng)的動物做正確的操作 有個類/函數(shù)可以通過參數(shù)幫助我們找到上面的這個工廠 這就是抽象工廠

        from abc import ABCMeta
        
        class StandardFactory(object):
         '''這就是那個抽象工廠'''
         @staticmethod
         def get_factory(factory):
         '''根據(jù)參數(shù)找到對實際操作的工廠'''
         if factory == 'cat':
         return CatFactory()
         elif factory == 'dog':
         return DogFactory()
         raise TypeError('Unknown Factory.')
        
        
        這里幫助dog這個產(chǎn)品類找到應(yīng)該的屬性的工廠
        class DogFactory(object):
         def get_pet(self):
         return Dog();
        
        
        class CatFactory(object):
         # 注意這個方法和上面的名字一樣,但是返回的類不同,這就是工廠的作用
         def get_pet(self):
         return Cat();
        
        
        # 可以認(rèn)為dog和cat都是動物的一種,可以有個基類
        class Pet(object):
         # ABCMeta會讓這個類在注冊后添加很多基礎(chǔ)抽象基類,可以看[ABCMeta](http://docs.python.org/2/library/abc.html#abc.ABCMeta)
         __metaclass__ = ABCMeta
         def eat(self):
         pass
        
        
        # Dog應(yīng)該做什么就是這里
        class Dog(Pet):
         def eat(self):
         return 'Dog food...'
        
        
        class Cat(Pet):
         # 這里的eat依然是同名,她們都是同樣的操作,只是返回不同
         def eat(self):
         return 'Cat food...'
        
        
        if __name__ =="__main__":
         factory = StandardFactory.get_factory('cat')
         pet = factory.get_pet()
         print pet.eat()
        
         # 注意這里,你只需要修改抽象工廠傳入的那個參數(shù),其他什么都不用改
         factory = StandardFactory.get_factory('dog')
         pet = factory.get_pet()
         print pet.eat()
        

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        舉例講解Python設(shè)計模式編程的代理模式與抽象工廠模式

        舉例講解Python設(shè)計模式編程的代理模式與抽象工廠模式:代理模式 Proxy模式是一種常用的設(shè)計模式,它主要用來通過一個對象(比如B)給一個對象(比如A) 提供'代理'的方式方式訪問。比如一個對象不方便直接引用,代理就在這個對象和訪問者之間做了中介 你先設(shè)想:一個對象提供rgb三種顏色值,我想獲得一個對象的rgb
        推薦度:
        標(biāo)簽: 模式 工廠 python
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久综合久久综合亚洲| 亚洲成人午夜在线| 亚洲美国产亚洲AV| 在线视频免费观看高清| 亚洲视频在线观看网站| 99re免费99re在线视频手机版| 岛国大片免费在线观看| 亚洲中文字幕久久久一区| 人禽杂交18禁网站免费| 亚洲欧美自偷自拍另类视| 拨牐拨牐x8免费| 久久精品国产亚洲av天美18| 成人免费无码精品国产电影| 亚洲AV无码国产精品永久一区| 日本h在线精品免费观看| 亚洲一区精品视频在线| 无码高潮少妇毛多水多水免费| 亚洲一卡2卡3卡4卡国产网站| 日本XXX黄区免费看| 欧美亚洲国产SUV| 久久乐国产精品亚洲综合| 国产免费无码一区二区| 亚洲AV无码不卡在线播放| 欧洲一级毛片免费| 亚洲欧洲专线一区| 久久亚洲色一区二区三区| 久久这里只精品国产免费10| 97se亚洲国产综合自在线| 国产精品免费小视频| caoporn成人免费公开| 亚洲第一精品在线视频| 最近中文字幕mv手机免费高清| 亚洲成av人片在www鸭子| 国产亚洲情侣一区二区无| 美丽的姑娘免费观看在线播放| 亚洲熟妇无码久久精品| 国产jizzjizz免费看jizz| 国产午夜免费高清久久影院| 亚洲自国产拍揄拍| 亚洲永久精品ww47| 久久不见久久见中文字幕免费 |