<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
        主站蜘蛛池模板: 久久免费观看国产99精品| 毛片基地免费观看| 亚洲中文字幕丝袜制服一区| 国产亚洲精品精华液| 亚洲va在线va天堂成人| 免费观看黄色的网站| 色噜噜亚洲精品中文字幕| 亚洲人成7777| a级毛片无码免费真人| 亚洲高清有码中文字| 日本亚洲欧洲免费天堂午夜看片女人员 | 国产免费人人看大香伊| 亚洲AV综合色一区二区三区| 久久精品成人免费网站| 免费v片视频在线观看视频| 免费一级毛片在线播放放视频 | 亚洲国产av一区二区三区丶| 在线观看H网址免费入口| 亚洲αv久久久噜噜噜噜噜| 久久国产免费一区二区三区| 亚洲毛片一级带毛片基地| 国产一级a毛一级a看免费视频 | 亚洲欧美成人综合久久久| 国产免费啪嗒啪嗒视频看看| 有码人妻在线免费看片| 国产亚洲精品va在线| 国色精品卡一卡2卡3卡4卡免费| 亚洲综合在线一区二区三区 | 国产一区二区免费在线| 一本一道dvd在线观看免费视频| 亚洲乱亚洲乱妇无码麻豆| 直接进入免费看黄的网站| 天天操夜夜操免费视频| 免费夜色污私人影院网站| 亚洲人成网站影音先锋播放| 啦啦啦中文在线观看电视剧免费版| 亚洲av无码av在线播放| 日本不卡免费新一二三区| 国产精品午夜免费观看网站| 激情内射亚洲一区二区三区| 你是我的城池营垒免费观看完整版|