Python抽象工厂模式

抽象工厂模式,一个抽象工厂可以生产同一系列的多个型号产品实例。

class TypeB(object):
    def __init__(self):
        pass


class TypeA(object):
    def __init__(self):
        pass


class AbstractFactory(object):
    def __init__(self):
        super().__init__()
        self.type_a = TypeA
        self.type_b = TypeB

    def get_instance_type_a(self):
        return self.type_a()

    def get_instance_type_b(self):
        return self.type_b()


def main():
    abstract_factory = AbstractFactory()
    product_a = abstract_factory.get_instance_type_a()
    product_b = abstract_factory.get_instance_type_b()


if __name__ == '__main__':
    main()
抽象工厂模式是一种创建型设计模式,它允许客户端通过接口创建一组相关或依赖对象的家族,而不需要指定它们的具体类。下面是Python抽象工厂模式的实现步骤示例代码: 1.定义抽象工厂类,其中包含创建产品的抽象方法。 ```python class AbstractFactory: def create_product_a(self): pass def create_product_b(self): pass ``` 2.定义具体工厂类,实现抽象工厂类中的抽象方法,用于创建具体的产品。 ```python class ConcreteFactory1(AbstractFactory): def create_product_a(self): return ConcreteProductA1() def create_product_b(self): return ConcreteProductB1() class ConcreteFactory2(AbstractFactory): def create_product_a(self): return ConcreteProductA2() def create_product_b(self): return ConcreteProductB2() ``` 3.定义抽象产品类,其中包含产品的抽象方法。 ```python class AbstractProductA: def do_something(self): pass class AbstractProductB: def do_something(self): pass ``` 4.定义具体产品类,实现抽象产品类中的抽象方法。 ```python class ConcreteProductA1(AbstractProductA): def do_something(self): return "ConcreteProductA1" class ConcreteProductA2(AbstractProductA): def do_something(self): return "ConcreteProductA2" class ConcreteProductB1(AbstractProductB): def do_something(self): return "ConcreteProductB1" class ConcreteProductB2(AbstractProductB): def do_something(self): return "ConcreteProductB2" ``` 5.客户端使用抽象工厂类创建具体工厂类的实例,然后使用具体工厂类的实例创建具体产品类的实例。 ```python factory1 = ConcreteFactory1() product_a1 = factory1.create_product_a() product_b1 = factory1.create_product_b() factory2 = ConcreteFactory2() product_a2 = factory2.create_product_a() product_b2 = factory2.create_product_b() ``` 输出结果: ```python print(product_a1.do_something()) # 输出:ConcreteProductA1 print(product_b1.do_something()) # 输出:ConcreteProductB1 print(product_a2.do_something()) # 输出:ConcreteProductA2 print(product_b2.do_something()) # 输出:ConcreteProductB2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值