抽象工厂模式

'''
:定义一个用于创建对象的接口(工厂接口),让子类决定实例化哪一个产品类。


角色:


抽象工厂角色(Creator)
具体工厂角色(Concrete Creator)
抽象产品角色(Product)
具体产品角色(Concrete Product)
工厂方法模式相比简单工厂模式将每个具体产品都对应了一个具体工厂。


适用场景:


需要生产多种、大量复杂对象的时候。
需要降低耦合度的时候。
当系统中的产品种类需要经常扩展的时候。
优点:


每个具体产品都对应一个具体工厂类,不需要修改工厂类代码
隐藏了对象创建的实现细节
缺点:


每增加一个具体产品类,就必须增加一个相应的具体工厂类






'''
#===================1================================
# from abc import abstractmethod,ABCMeta
# class Payment(metaclass=ABCMeta):
#     @abstractmethod
#     def pay(self,money):
#         pass
#
#
# class Alipay(Payment):
#     def pay(self,money):
#         print("支付宝支付%s"%money)
#
# class ApplePay(Payment):
#     def pay(self,money):
#         print("苹果支付%s" % money)
#
# class PaymentFactory(metaclass=ABCMeta):
#     @abstractmethod
#     def created_payment(self):
#         pass
#
# class AlipayFactory(PaymentFactory):
#     def created_payment(self):
#         return Alipay()
#
#
# class ApplePayFactory(PaymentFactory):
#     def created_payment(self):
#         return ApplePay()
#
# af=AlipayFactory()
# ali=af.created_payment()
# ali.pay(120)
#=========================2===============================
from abc import ABCMeta,abstractmethod


class Product(metaclass=ABCMeta):
    @abstractmethod
    def eat(self,name):
        pass


class Fruit(Product):
    def eat(self,name):
        print("I am eating is %s" % name)


class ChickenWing(Product):
    def eat(self,name):
        print("i am eating is %s"% name)


class Factor(metaclass=ABCMeta):
    @abstractmethod
    def product(self,name):
        pass


class FruitFactor(Factor):


    def product(self,name):
        return Fruit()


class ChickenWingFactor(Factor):
    def product(self,name):
        return ChickenWing()






f=FruitFactor()
p=f.product("fruit")
p.eat("sala")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值