设计模式 - 工厂模式

last modify

概述

  • 思想:使用工厂方法代替手动实例化对象;

  • 目的

    • 简化对象的创建过程;

    • 将创建对象的代码与使用对象的代码解耦,从而降低维护的复杂度(对比多态);

Python 示例

  • 使用工厂方法还是抽象工厂?

    • 答案是:通常从简单的工厂方法开始。如果发现应用程序需要许多工厂方法,且将这些方法组合起来创建一系列对象是有意义的,那么就使用抽象工厂。

工厂方法

class Demo:
    pass


class ADemo(Demo):
    def __init__(self, *args, **kwargs):
        pass


class BDemo(Demo):
    def __init__(self, *args, **kwargs):
        pass


def get_demo(name, *args, **kwargs) -> Demo:
    """ factory method """
    if name == 'A':
        return ADemo(*args, **kwargs)
    elif name == 'B':
        return BDemo(*args, **kwargs)
    else:
        raise ValueError(...)

抽象工厂

  • 抽象工厂实际上就是一系列工厂方法的集合,用于创建一系列相关的对象;

class Factory:

    def make_a(self) -> A:
        pass

    def make_b(self) -> B:
        pass

Last updated