2018-10-07 Python19 簡(jiǎn)單工廠模式、工廠方法模式

通過(guò)增加一個(gè)類(工廠類),使得兩個(gè)類(兩部分代碼)解耦,就叫做簡(jiǎn)單工廠設(shè)計(jì)模式。
基類中定義接口,子類中重寫實(shí)現(xiàn),叫做工廠方法模式。

  1 class Store(object):     #店鋪-基類
  2     def select_type(self):  #接口
  3         pass
  4     def order(self, car_type):
  5         return self.select_type(car_type)
  6 
  7 class XDStore(Store):             #現(xiàn)代4S店
  8     def select_type(self, car_type):  #實(shí)現(xiàn)
  9         return XDFactory().select_car_by_type(car_type)
 10 class BMWStore(Store):             #寶馬4S店
 11     def select_type(self, car_type):  #實(shí)現(xiàn)
 12         return BMWFactory().select_car_by_type(car_type)
 13 
 14 
 15 class BMWFactory(object):      #寶馬車工廠
 16     def select_car_by_type(self, car_type):
 17         pass
 18         '''
 19         if car_type=="mini":
 20             return Mini()
 21         elif car_type=="720li":
 22             return Li720()
 23         elif car_type=="X6":
 24             return X6()
 25         '''
 26 
 27 class XDFactory(object):      #現(xiàn)代車工廠
 28     def select_car_by_type(self, car_type):
 29         if car_type=="索納塔":
 30             return Suonata()
 31         elif car_type=="名圖":
 32             return Mingtu()
 33         elif car_type=="ix35":
 34             return Ix35()
 35 
 36 
 37 class Car(object):     #車-基類
 38     def move(self):
 39         print("%s 在移動(dòng)...."%self.name)
 40     def music(self):
 41         print("%s 正在播放音樂(lè)...."%self.name)
 42     def stop(self):
 43         print("%s 在停止...."%self.name)
 44 
 45 class Suonata(Car):
 46     def __init__(self):
 47         self.name = "索納塔"
 48 
 49 class Mingtu(Car):
 50     def __init__(self):
 51         self.name = "名圖"
 52 
 53 class Ix35(Car):
 54     def __init__(self):
 55         self.name = "Ix35"
 56 
 57 
 58 xd_store = XDStore()
 59 car = xd_store.order("索納塔")
 60 car.move()

運(yùn)行:

索納塔 在移動(dòng)....
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 設(shè)計(jì)模式概述 在學(xué)習(xí)面向?qū)ο笃叽笤O(shè)計(jì)原則時(shí)需要注意以下幾點(diǎn):a) 高內(nèi)聚、低耦合和單一職能的“沖突”實(shí)際上,這兩者...
    彥幀閱讀 3,888評(píng)論 0 14
  • 文章部分內(nèi)容轉(zhuǎn)載自:http://blog.csdn.net/zhangerqing 一、設(shè)計(jì)模式的分類 總體來(lái)說(shuō)...
    j_cong閱讀 2,142評(píng)論 0 20
  • 一、設(shè)計(jì)模式的分類 總體來(lái)說(shuō)設(shè)計(jì)模式分為三大類: 創(chuàng)建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者...
    lichengjin閱讀 999評(píng)論 0 8
  • 我總感覺(jué),時(shí)間一年一年的過(guò),各種各樣的節(jié)日一年一年的多,而且大有把每一個(gè)節(jié)日都過(guò)成情人節(jié)的趨勢(shì)。 自從做新媒體以來(lái)...
    是秋醬啊閱讀 604評(píng)論 0 0
  • 史上最全的iOS各種設(shè)備信息獲取總結(jié) 軟件信息 1,獲取軟件版本號(hào) 手機(jī)信息 1.手機(jī)系統(tǒng)版本 2,獲取UUID ...
    小子愛(ài)搞事閱讀 589評(píng)論 0 0

友情鏈接更多精彩內(nèi)容