python如何代替工厂模式_Python与设计模式--工厂模式

快餐点餐系统

想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上,有3类可以选择的上餐品:汉堡等主餐、小食、饮料。当我们选择好自己需要的食物,支付完成后,订单就生成了。下面,我们用今天的 主角--工厂模式--来生成这些食物的逻辑主体。

首先我们主餐的生成(仅以两种汉堡为例)

# 工厂模式

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.name = "chicken wings"

self.price = 12.0

class Beverage():

name = ""

price = 0.0

type = "BEVERAGE"

def getPrice(self):

return self.price

def sefPrice(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

class foodFactory():

type = ""

def createFood(self,foodClass):

print(self.type,"factory product 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"

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())

工厂模式的定义如下:定义一个用于创建对象的接口,让子类决定实例化哪一个类。

转载 用Python实现设计模式——工厂模式

转载自 SegmentFault作者 夏秋, https://segmentfault.com/a/1190000013053013 非常感谢这位作者的深入浅出的讲解. 前言 工厂模式,顾名思义就是我 ...

.NET设计模式: 工厂模式

.NET设计模式: 工厂模式(转) 转自:http://www.cnblogs.com/bit-sand/archive/2008/01/25/1053207.html   .NET设计模式(1): ...

python实现简单工厂模式

python实现简单工厂模式 模式定义 简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式.在简单工 ...

大话设计模式Python实现- 抽象工厂模式

抽象工厂模式(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们的类 下面是一个抽象工厂的demo: #!/usr/bin/env pyth ...

浅谈Python设计模式 - 工厂模式

声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 工厂模式: 顾名思义,工厂则是根据提供的不同的材料,生产出不同的产品.那么在编程 ...

大话设计模式Python实现-简单工厂模式

简单工厂模式(Simple Factory Pattern):是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类. 下面使用简单工厂模式实现一个简单的四则运算 #!/usr/ ...

[Head First设计模式]饺子馆(冬至)中的设计模式——工厂模式

系列文章 [Head First设计模式]山西面馆中的设计模式——装饰者模式 [Head First设计模式]山西面馆中的设计模式——观察者模式 [Head First设计模式]山西面馆中的设计模式— ...

javascript 设计模式-----工厂模式

所谓的工厂模式,顾名思义就是成批量地生产模式.它的核心作用也是和现实中的工厂一样利用重复的代码最大化地产生效益.在javascript中,它常常用来生产许许多多相同的实例对象,在代码上做到最大的利用. ...

JavaScript设计模式——工厂模式

工厂模式:是一种实现“工厂”概念的面上对象设计模式.实质是定义一个创建对象的接口,但是让实现这个接口的类来决定实例化哪个类.工厂方法让类的实例化推迟到子类中进行.创建一个对象常常需要复杂的过程,所以不 ...

随机推荐

设置Flush刷新模式setFlushMode()

参考 http://blog.csdn.net/superdog007/article/details/38852399 FlushMode的枚举值: FlushMode.ALWAYS:任务一条SQL ...

FPGA低级建模---按键去抖动

FPGA低级建模,原则上一个模块一个功能,如按键去抖动建模中,有两个模块. 1.detect_module 这个是按键检测模块,主要检测按键的高低电平变化,现在按键是按下还是释放. 2.delay_m ...

HTML之<;!DOCTYPE>; 标签介绍

实例:

文档的标题 & ...

JSP(二)

一.pageContext对象    1>代表当前JSP页面的运行环境, [作用域仅仅局限于当前JSP页面中,出了该JSP页面, 原PageContext域对象被销毁]    2>封装了对 ...

Android的电源管理框架

Android的电源管理框架 Android通过锁和定时器来切换系统的状态,使系统的功耗降至最低,整个系统的电源管理框架分成五个部分:应用层,framework层,JNI层,HAL层和内核层.电源管理 ...

iOS中怎样加入自己定义的字体

苹果对于开发,确实在细节方面下了非常大的功夫,只是不管一个平台下多大的功夫,仍然会有些需求是无法涵盖的.比方字体吧. 我们的应用为了能更加个性化.会须要不同的字体.有时候有些字体是非常特殊的.甚至是购 ...

CSS 设置table下tbody滚动条

table tbody { display:block; height:195px; overflow-y:scroll; } table thead, tbody tr { display:tabl ...

python手动设置递归调用深度

python超出递归深度时会出现异常: RuntimeError: maximum recursion depth exceeded python默认的递归深度是很有限的,大概是900当递归深度超过这 ...

hive的map类型处理

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-CollectionFunc ...

你可能感兴趣的:(python如何代替工厂模式)