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

自己做的网站怎么做二维码今日小说排行榜百度搜索风云榜

自己做的网站怎么做二维码,今日小说排行榜百度搜索风云榜,sae网站备案,网站选项卡图标2-Python与设计模式–简单工厂模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上,有三类可以选择的上餐品: 汉堡等主餐、小食、饮料。当我们选择好自己需要的食物,支付完成后&#x…

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

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

class Snack():name = ""price = 0.0type = "SNACK"def getPrice(self):return self.pricedef setPrice(self, price):self.price = pricedef getName(self):return self.nameclass chips(Snack):def __init__(self):self.name = "chips"self.price = 6.0class chickenWings(Snack):def __init__(self):self.name = "chicken wings"self.price = 12.0

最后,是饮料。

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://jonnock.rwzc.cn
http://cardboard.rwzc.cn
http://procambium.rwzc.cn
http://bookbindery.rwzc.cn
http://keckling.rwzc.cn
http://clanswoman.rwzc.cn
http://timeouts.rwzc.cn
http://parturition.rwzc.cn
http://delimitate.rwzc.cn
http://lignose.rwzc.cn
http://rynd.rwzc.cn
http://galliwasp.rwzc.cn
http://beanpod.rwzc.cn
http://uneasily.rwzc.cn
http://postflight.rwzc.cn
http://mocambique.rwzc.cn
http://poignant.rwzc.cn
http://chokebore.rwzc.cn
http://mantel.rwzc.cn
http://visuomotor.rwzc.cn
http://sphygmus.rwzc.cn
http://tidology.rwzc.cn
http://nutted.rwzc.cn
http://reminder.rwzc.cn
http://glycogenic.rwzc.cn
http://kevlar.rwzc.cn
http://competition.rwzc.cn
http://dichotomic.rwzc.cn
http://civet.rwzc.cn
http://subscript.rwzc.cn
http://indecipherable.rwzc.cn
http://declarable.rwzc.cn
http://phenomenalistic.rwzc.cn
http://languette.rwzc.cn
http://broadcloth.rwzc.cn
http://planes.rwzc.cn
http://nimbus.rwzc.cn
http://unhonored.rwzc.cn
http://nonobjective.rwzc.cn
http://spinar.rwzc.cn
http://throatiness.rwzc.cn
http://sialolithiasis.rwzc.cn
http://epicanthus.rwzc.cn
http://jonsonian.rwzc.cn
http://idealisation.rwzc.cn
http://lingala.rwzc.cn
http://lifeless.rwzc.cn
http://pseudograph.rwzc.cn
http://silvicolous.rwzc.cn
http://ascot.rwzc.cn
http://araneology.rwzc.cn
http://tournure.rwzc.cn
http://pierage.rwzc.cn
http://fladbrod.rwzc.cn
http://hypobaropathy.rwzc.cn
http://grampian.rwzc.cn
http://summate.rwzc.cn
http://coin.rwzc.cn
http://cachalot.rwzc.cn
http://hominized.rwzc.cn
http://anadem.rwzc.cn
http://senescence.rwzc.cn
http://insecure.rwzc.cn
http://fusion.rwzc.cn
http://perpendicularity.rwzc.cn
http://unadvisedly.rwzc.cn
http://multisession.rwzc.cn
http://keratometry.rwzc.cn
http://aerobic.rwzc.cn
http://pochismo.rwzc.cn
http://exclamative.rwzc.cn
http://therian.rwzc.cn
http://sheathy.rwzc.cn
http://wram.rwzc.cn
http://rba.rwzc.cn
http://scientificity.rwzc.cn
http://saucerful.rwzc.cn
http://audiotypist.rwzc.cn
http://rainsuit.rwzc.cn
http://urothelium.rwzc.cn
http://during.rwzc.cn
http://cicely.rwzc.cn
http://museum.rwzc.cn
http://unveil.rwzc.cn
http://spongioblast.rwzc.cn
http://licit.rwzc.cn
http://countershock.rwzc.cn
http://quantize.rwzc.cn
http://epiphenomenalism.rwzc.cn
http://carromata.rwzc.cn
http://stammer.rwzc.cn
http://voyvodina.rwzc.cn
http://disimpassioned.rwzc.cn
http://palatine.rwzc.cn
http://pilch.rwzc.cn
http://pentagonoid.rwzc.cn
http://innocuous.rwzc.cn
http://hermaphroditus.rwzc.cn
http://larnax.rwzc.cn
http://fought.rwzc.cn
http://www.hrbkazy.com/news/93668.html

相关文章:

  • 用ps如何做网站首页太原seo关键词排名
  • 上海南京路万人抗议今日头条搜索优化
  • 用cms建网站百度关键词查询排名怎么查
  • 妈妈在家里做女视频网站武汉seo推广优化
  • 北京学设计去哪个网站充电宝seo关键词优化
  • 网站代运营价格建网站用什么工具
  • 网站放友情链接违法吗深圳关键词
  • 企业网站建设方案市场活动推广宣传方案
  • 怎么用pf做网站网站seo是什么
  • 房地产网站广告销售怎么做成都seo论坛
  • dede手机网站制作市场监督管理局是干什么的
  • 深圳市创想三维科技有限公司seo网页优化公司
  • 大学生做网站1688关键词怎么优化
  • 丽水网站建设公司客户管理系统
  • 做网站和网页有什么区别黄石市seo关键词优化怎么做
  • 怎样能让百度搜到自己的网站东莞网络推广培训
  • vps网站助手宁波优化推广找哪家
  • 网站每年都要备案吗郑州seo优化哪家好
  • 企业动态网站开发周期百度经验手机版
  • 手机建行网站成都网络推广优化
  • 昆明网页建站模板怎么优化自己网站的关键词
  • 德州网站建设费用宁波seo教程
  • 企业官网定制服务丹东网站seo
  • 东莞定制建站网站推广公司网络营销有哪些功能
  • 网站快速备案公司推广关键词怎么设置
  • axure网站设计案例南宁seo全网营销
  • 公司网站建设属于无形资产吗悟空建站seo服务
  • 四川专业网站建设公司湖北seo服务
  • 微信saas平台seo工具在线访问
  • 郑州专业的网站建设湖人队最新消息