【Python 设计模式】 01 Factory Method 工厂方法模式

Factory Method 工厂方法模式

  1. 说明

工厂模式包涵一个超类,这个超类提供一个抽象化的接口来实例化一个特定类型的对象。

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

class Product(ABC):

    @abstractmethod
    def use(self):
        '''使用产品'''

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:
        '''创建产品'''

    @abstractmethod
    def _register_product(self, Product):
        '''注册产品'''

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('小蓝')
    baz = id_factory_2.create('小李')
    foo.use()
    bar.use()
    print(id_factory_1.owners)
    print(id_factory_2.owners)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 简单工厂模式虽然简单,但存在一个很严重的问题。当系统中需要引入新产品时,由于静态工厂方法通过所传入参数的不同来创建...
    justCode_阅读 4,976评论 1 9
  • 一、工厂模式介绍 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每...
    QuantRuu阅读 4,106评论 0 51
  • 【学习难度:★★☆☆☆,使用频率:★★★★★】直接出处:工厂方法模式梳理和学习:https://github.co...
    BruceOuyang阅读 3,836评论 0 2
  • 早上,起床 发现屋子飞了起来 鲤鱼在地上跑 鸭子敲打你窗 花园和昨天一样 邻家的孩子 正躲躲藏藏 你希望是一场梦 ...
    矢北阅读 2,481评论 0 4
  • 唇边的酒, 温润娇艳, 递与四月, 欲醉,且欲醒, 初入的冷漠, 转瞬成情人的浓情, 炙热,无法抵挡
    terry_8f89阅读 1,684评论 0 0

友情链接更多精彩内容