Python设计模式(三)--抽象工厂模式

抽象工厂

抽象工厂模式(英语:Abstract factory pattern)是一种软件开发设计模式。抽象工厂模式提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。
在正常使用中,客户端程序需要创建抽象工厂的具体实现,然后使用抽象工厂作为接口来创建这一主题的具体对象。客户端程序不需要知道(或关心)它从这些内部的工厂方法中获得对象的具体类型,因为客户端程序仅使用这些对象的通用接口。抽象工厂模式将一组对象的实现细节与他们的一般使用分离开来。[1]

概念

抽象工厂模式的实质是“提供接口,创建一系列相关或独立的对象,而不指定这些对象的具体类。

UML图

这里写图片描述

实现

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#######################################################
#    
#    文件名 :   abstruct_factory.py
#    作者   :   WangYi
#  电子邮箱 :   gzytemail@126.com
#    日期   :   2017/04/12 17:17:22
#    
#    描述   :   抽象工厂模式
#


# Abstruct Product A
class APA(object):
    def __init__(self):
        pass

    def create(self):
        pass


# Abstruct Product B
class APB(object):
    def __init__(self):
        pass

    def create(self):
        pass


# Product A_1
class PA1(APA):
    def __init__(self):
        print("create PA1 instance")

    def create(self):
        print("making a Product A1")

# Product A_1
class PA2(APA):
    def __init__(self):
        print("create PA2 instance")

    def create(self):
        print("making a Product A2")


# Product B_1
class PB1(APB):
    def __init__(self):
        print("create PB1 instance")

    def create(self):
        print("making a Product B1")


# Product B_2
class PB2(APB):
    def __init__(self):
        print("create PB2 instance")


# Abstruct Factory Class
class AF(object):
    def __init__(self):
        pass

    def make_product_a(self):
        pass

    def make_product_b(self):
        pass


# Factory A
class FactoryA(AF):
    def __init__(self):
        pass

    def make_product_a(self):
        return PA1()

    def make_product_b(self):
        return PB1()


# Factory B
class FactoryB(AF):
    def __init__(self):
        pass

    def make_product_a(self):
        return PA2()

    def make_product_b(self):
        return PB2()


def product_process():
    for cls in [FactoryA, FactoryB]:
        f = cls()
        # get Product A instance
        a = f.make_product_a()
        a.create()
        # get Product B instance
        b = f.make_product_b()
        b.create()


if __name__ == "__main__":
    product_process()

结果如下:

create PA1 instance
making a Product A1
create PB1 instance
making a Product B1
create PA2 instance
making a Product A2
create PB2 instance
making a Product B2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值