python 设计模式之工厂类相关模式

python 工厂类设计模式
例:麦当劳自助点餐台一类的点餐系统。在触摸显示屏上,有三类可以选择的餐品:汉堡,小食,饮料。当我们选择好自己的食物,支付完成,订单就生成了。

1.汉堡以2种为例

class Burger(object):
    name = ""
    price = 0.0

    def getPrice(self):
        return self.price

    def setPrice(self, price):
        self.price = price

    def getName(self):
        return self.name


class cheeseBurger(Burger):
    def __init__(self):
        self.name = "cheese burger"
        self.price = 10.0


class spicyChickenBurger(Burger):
    def __init__(self):
        self.name = "spicy chicken burger"
        self.price = 15.0

2.小食

class Snack(object):
    name = ""
    price = 0.0
    type = 'SNACK'

    def getPrice(self):
        return self.price

    def setPrice(self, price):
        self.pirce = price

    def getName(self):
        return self.name


class chips(Snack):
    def __init__(self):
        self.name = 'chips'
        self.price = 6.0


class chickenWings(Snack):
    def __init__(self):
        self.name = "chicken wings"
        self.price = 12.0

3.饮料

class Beverage(object):
    name = ""
    price = 0.0
    type = "BEVERAGE"

    def getPrice(self):
        return self.price

    def setPrice(self, price):
        self.price = price

    def getName(self):
        return self.name


class coke(Beverage):
    def __init__(self):
        self.name = 'coke'
        self.price = 4.0


class milk(Beverage):
    def __init__(self):
        self.name = 'milk'
        self.price = 5.0

以上的Burger, Snack,Beverage都可以认为是该快餐店的产品,由于只提供了抽象方法,我们把它们叫抽象产品类,而cheese burger登6个由抽象产品类衍生出的子类,叫作具体产品类,接下来,"工厂"就要出现了。

class foodFactory(object):
    type = ""

    def createFood(self, foodClass):
        print(self. type, "factory produce a instance")
        foodIns = foodClass()
        return foodIns


class burgerFactory(foodFactory):
    def __init__(self):
        self.type = "BURGER"


class snackFactory(foodFactory):
    def __init__(self):
        self.type = "SNACK"


class beverageFactory(foodFactory):
    def __init__(self):
        self.type = "BEVERAGE"

foodFactory为抽象的工厂类,而burgerFactory,snackFactory,beverageFactory为具体的工厂类

if __name__ == '__main__':
    burger_factory = burgerFactory()
    snack_factory = snackFactory()
    beverage_factory = beverageFactory()
    cheese_burger = burger_factory.createFood(cheeseBurger)
    print(cheese_burger.getName(), cheese_burger.getPrice())

    chicken_wings = snack_factory.createFood(chickenWings)
    print(chicken_wings.getName(), chicken_wings.getPrice())

    coke_drink = beverage_factory.createFood(coke)
    print(coke_drink.getName(), coke_drink.getPrice())

业务中先生成了工厂,然后用工厂中的createFood方法和对应的参数直接生成产品实例。打印结果为:

BURGER factory produce a instance
cheese burger 10.0
SNACK factory produce a instance
chicken wings 12.0
BEVERAGE factory produce a instance
coke 4.0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值