【Python 設(shè)計(jì)模式】 01 Factory Method 工廠方法模式

Factory Method 工廠方法模式

  1. 說明

工廠模式包涵一個(gè)超類,這個(gè)超類提供一個(gè)抽象化的接口來實(shí)例化一個(gè)特定類型的對(duì)象。

  1. UML
Factory_Method.png
  1. 代碼
from abc import ABC, abstractmethod

class Product(ABC):

    @abstractmethod
    def use(self):
        '''使用產(chǎn)品'''

class Factory(ABC):

    def create(self, owner):
        p = self._create_product(owner)
        self._register_product(p)
        return p

    @abstractmethod
    def _create_product(self, owner) -> Product:
        '''創(chuàng)建產(chǎn)品'''

    @abstractmethod
    def _register_product(self, Product):
        '''注冊(cè)產(chǎn)品'''

class IDCard(Product):

    def __init__(self, owner):
        print('制作' + owner + '的ID卡')
        self.owner = owner

    def use(self):
        print('使用{}的ID卡'.format(self.owner) )

    def get_owner(self):
        return self.owner

class IDCardFactory(Factory):

    def __init__(self):
        self.owners = []

    def _create_product(self, owner):
        return IDCard(owner)

    def _register_product(self, Product):
        self.owners.append(Product.owner)

    def get_owners(self):
        return self.owners

if __name__ == '__main__':
    id_factory_1 = IDCardFactory()
    id_factory_2 = IDCardFactory()
    foo = id_factory_1.create('小紅')
    bar = id_factory_1.create('小藍(lán)')
    baz = id_factory_2.create('小李')
    foo.use()
    bar.use()
    print(id_factory_1.owners)
    print(id_factory_2.owners)
?著作權(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)容

  • 簡(jiǎn)單工廠模式雖然簡(jiǎn)單,但存在一個(gè)很嚴(yán)重的問題。當(dāng)系統(tǒng)中需要引入新產(chǎn)品時(shí),由于靜態(tài)工廠方法通過所傳入?yún)?shù)的不同來創(chuàng)建...
    justCode_閱讀 1,317評(píng)論 1 9
  • 一、工廠模式介紹 工廠模式專門負(fù)責(zé)將大量有共同接口的類實(shí)例化。工廠模式可以動(dòng)態(tài)決定將哪一個(gè)類實(shí)例化,不必事先知道每...
    QuantRuu閱讀 812評(píng)論 0 51
  • 【學(xué)習(xí)難度:★★☆☆☆,使用頻率:★★★★★】直接出處:工廠方法模式梳理和學(xué)習(xí):https://github.co...
    BruceOuyang閱讀 714評(píng)論 0 2
  • 早上,起床 發(fā)現(xiàn)屋子飛了起來 鯉魚在地上跑 鴨子敲打你窗 花園和昨天一樣 鄰家的孩子 正躲躲藏藏 你希望是一場(chǎng)夢(mèng) ...
    矢北閱讀 340評(píng)論 0 4
  • 唇邊的酒, 溫潤(rùn)嬌艷, 遞與四月, 欲醉,且欲醒, 初入的冷漠, 轉(zhuǎn)瞬成情人的濃情, 炙熱,無法抵擋
    terry_8f89閱讀 255評(píng)論 0 0

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