当前位置: 首页 > news >正文

做毕业设计资料网站好推广平台 赚佣金

做毕业设计资料网站好,推广平台 赚佣金,长沙企业关键词优化,阿里云服务器价格23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…

23种计模式之 前言 +(5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、+(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、+(11)策略模式、责任链模式、命令模式、中介者模式、模板模式、迭代器模式、访问者模式、观察者模式、解释器模式、备忘录模式、状态模式 + 设计原则

2-Python与设计模式–工厂类相关模式

一、快餐点餐系统

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

首先,来看主餐的生成(仅以两种汉堡为例)

class Burger():name=""price=0.0def getPrice(self):return self.pricedef setPrice(self,price):self.price=pricedef 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

1.2 其次,是小食。(内容基本一致)

class Burger():name=""price=0.0def getPrice(self):return self.pricedef setPrice(self,price):self.price=pricedef 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

1.3 饮料

class Beverage():name = ""price = 0.0type = "BEVERAGE"def getPrice(self):return self.pricedef setPrice(self, price):self.price = pricedef getName(self):return self.nameclass coke(Beverage):def __init__(self):self.name = "coke"self.price = 4.0class 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 beverageFactory(foodFactory):def __init__(self):self.type="BEVERAGE"

同样,foodFactory为抽象的工厂类,而burgerFactory,snackFactory,beverageFactory为具体的 工厂类。在业务场景中,工厂模式是如何“生产”产品的呢?

if  __name__=="__main__":burger_factory=burgerFactory()snack_factorry=snackFactory()beverage_factory=beverageFactory()cheese_burger=burger_factory.createFood(cheeseBurger)print cheese_burger.getName(),cheese_burger.getPrice()chicken_wings=snack_factorry.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

二、工厂模式、简单工厂模式、抽象工厂模式

工厂模式的定义如下:定义一个用于创建对象的接口,让子类决定实例化哪个类。
工厂方法使一个类的实例化延迟到其子类。其通用类图如下。其产品类定义产品的公共属性和接口,
工厂类定义产品实例化的“方式”。

在上述例子中,工厂在使用前必须实例化。如果,把工厂加个类方法,写成如下形式:

class simpleFoodFactory():@classmethoddef createFood(cls,foodClass):print "Simple factory produce a instance."foodIns = foodClass()return foodIns

在场景中写成如下形式: spicy_chicken_burger=simpleFoodFactory.createFood(spicyChickenBurger)这样,省去了将工厂实例化的过程。 这种模式就叫做简单工厂模式。还是在上述例子中,createFood方法中必须传入foodClass才可以指定生成的food 实例种类,如果,将每一个细致的产品都建立对应的工厂(如cheeseBurger建立对应一个cheeseBurgerFactory), 这样,生成食物时,foodClass也不必指定。事实上,此时,burgerFactory就是具体食物工厂的一层抽象。 这种模式,就是抽象工厂模式。

三、工厂模式的优点和应用

工厂模式、抽象工厂模式的优点:
1、工厂模式巨有非常好的封装性,代码结构清晰;在抽象工厂模式中,其结构还可以随着需要进行更深或者更浅的抽象层级调整,非常灵活;
2、屏蔽产品类,使产品的被使用业务场景和产品的功能细节可以分而开发进行,是比较典型的解耦框架。工厂模式、抽象工厂模式的使用场景:
1、当系统实例要求比较灵活和可扩展时,可以考虑工厂模式或者抽象工厂模式实现。比如,在通信系统中,高层通信协议会很多样化,同时,上层协议依赖于下层协议,那么就可以对应建立对应层级的抽象工厂,根据不同的“产品需求”去生产定制的实例。

四、工厂类模式的不足

1、工厂模式相对于直接生成实例过程要复杂一些,所以,在小项目中,可以不使用工厂模式;
2、抽象工厂模式中,产品类的扩展比较麻烦。毕竟,每一个工厂对应每一类产品,产品扩展,就意味着相应的抽象工厂也要扩展
http://www.15wanjia.com/news/183305.html

相关文章:

  • 丹东做网站的企业网站推荐
  • 一般做网站需要多少钱机票酒店网站建设
  • 如何将vs做的网站备份出来WordPress降低加载时间
  • 全球十大网站访问量排名wordpress用户数据库
  • 用dw做红米网站汽车cms
  • 怎样买网站建设广州百度seo排名优化
  • 做网站的html框架高端网站建设公司有必要做吗
  • 安装php网站dw怎么做网站标题图标
  • 美术类网站建设费用镇江教育平台网站建设
  • 建设外贸英文网站wordpress 架构设计
  • 如何用书签 做网站接口舆情分析报告范文
  • 一级页面的网站怎么做windows优化大师怎么下载
  • 什么网站程序好推广网站发布文章
  • 单页网站怎么做排名东莞网络优化服务商
  • 自己做公司网站简单吗如何建设内网网站
  • 郑州专业做淘宝网站wordpress 编辑图片无法显示
  • 电子商务公司开发网站网站制作 服务器 系统
  • 网站开发平台及常用的开发工具设计网站公司有哪些
  • 效果型网站广东省自然资源厅吴鋆
  • 网站维护是什么样怎么做网站移植网站
  • 海关企业信息查询网站网站导航条怎么做
  • 外贸建站 知乎在哪个网站可以做外单衣服
  • 北京建站优化公司宁波专业做网站的公司哪家好
  • 南京做网站哪家最好网站建设与实践步骤
  • 大型网站建设流程关键词有几种类型
  • 临沂做公司网站仿制网站建设
  • 宠物网站建设报告搜索引擎网站
  • ip反查域名网站wordpress仿qq
  • 移动网站开发 书开源php企业网站
  • 广东网站建设排名深圳做网站那家好