zoukankan      html  css  js  c++  java
  • 创建类设计模式-工厂类相关模式

    """
    一、快餐点餐系统
    点餐系统,有三类可选择产品,主餐,小食,饮料。我们可以任意选择,下单,支付完成之后,订单完成。
    工厂模式-生成这些食物的逻辑主题
    
    
    """
    class Burger():
        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
    class Snack():
        name = ""
        price = 0.0
    
        type = "SNACK"
    
        def getPrice(self):
            return self.price
    
        def setPrice(self, price):
            self.price = 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.anme = "chickenwings"
            self.pric = 12.0
    class Beverage():
        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():
        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 bevergeFactory(FoodFactory):
    
        def __init__(self):
            self.type = "BEVERAGE"
    
    
    """
    同样,foodFactory为抽象的工厂类,
    而burgerFactory,snackFactory,beverageFactory为具体的工厂类。
    
    """
    if __name__=="__main__":
        burgerF=burgerFactory()
        snackF=snackFactory()
        beverage_factory = bevergeFactory()
        cheese_burger = beverage_factory.createFood(cheeseBurger)
        print(cheese_burger.getName(), cheese_burger.getPrice())
        chicken_wings = snackF.createFood(chickenwings)
        print(chicken_wings.getName(), chicken_wings.getPrice())
        coke_drink = beverage_factory.createFood(coke)
        print(coke_drink.getName(),coke_drink.getPrice())
    BEVERAGE  factory produce a instance.
    cheese burger 10.0
    SNACK  factory produce a instance.
     0.0
    BEVERAGE  factory produce a instance.
    coke 4.0
  • 相关阅读:
    禅道,导出选中的用例
    chrome 历史版本下载地址
    在QT中添加zeromq DLL库
    在QT中添加zeromq DLL库
    在QT中添加zeromq库,zeromq的下载编译
    工控软件dll劫持漏洞分析
    [转载]Impost3r:一款针对Linux的密码提取工具
    0MQ绑定Delphi版-说明
    通过Maven导出war包时报错:Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.2:war (default-war) on project Ocr: Error assembling WAR: webxml
    价值投资必须掌握的几个指标zz
  • 原文地址:https://www.cnblogs.com/Xingtxx/p/12879651.html
Copyright © 2011-2022 走看看