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

自己做的网站怎么做二维码新闻头条最新消息今天发布

自己做的网站怎么做二维码,新闻头条最新消息今天发布,网站空间邮箱,asp.net 网站管理系统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://dinncofittingly.bkqw.cn
http://dinncowonderworking.bkqw.cn
http://dinncoovoid.bkqw.cn
http://dinncopectin.bkqw.cn
http://dinncofoliage.bkqw.cn
http://dinncokrakatoa.bkqw.cn
http://dinncodrawling.bkqw.cn
http://dinncosaprolite.bkqw.cn
http://dinnconeutrino.bkqw.cn
http://dinncosurvive.bkqw.cn
http://dinncoelasmobranch.bkqw.cn
http://dinncodampish.bkqw.cn
http://dinncohellenize.bkqw.cn
http://dinncounprescribed.bkqw.cn
http://dinncopaleohabitat.bkqw.cn
http://dinncomaseru.bkqw.cn
http://dinncos3.bkqw.cn
http://dinncobelat.bkqw.cn
http://dinncolobulation.bkqw.cn
http://dinncochad.bkqw.cn
http://dinncomilden.bkqw.cn
http://dinncokinkajou.bkqw.cn
http://dinncovedaic.bkqw.cn
http://dinncoburmese.bkqw.cn
http://dinncosensorial.bkqw.cn
http://dinncofought.bkqw.cn
http://dinncobuonaparte.bkqw.cn
http://dinncoriboflavin.bkqw.cn
http://dinncochuffing.bkqw.cn
http://dinncopinkster.bkqw.cn
http://dinncoplanimetry.bkqw.cn
http://dinncoastrometer.bkqw.cn
http://dinncopeevit.bkqw.cn
http://dinncoacranial.bkqw.cn
http://dinnconombril.bkqw.cn
http://dinncowingspan.bkqw.cn
http://dinncoweep.bkqw.cn
http://dinncocheese.bkqw.cn
http://dinncocacoethes.bkqw.cn
http://dinncovictualer.bkqw.cn
http://dinncoflabellum.bkqw.cn
http://dinncoperegrin.bkqw.cn
http://dinncofabricable.bkqw.cn
http://dinncoscattershot.bkqw.cn
http://dinncoabought.bkqw.cn
http://dinncoozonolysis.bkqw.cn
http://dinncobriber.bkqw.cn
http://dinncoslugger.bkqw.cn
http://dinncosuperstratum.bkqw.cn
http://dinncohardwareman.bkqw.cn
http://dinncoanalyzed.bkqw.cn
http://dinncoexanimo.bkqw.cn
http://dinncopesthole.bkqw.cn
http://dinncoterritorialism.bkqw.cn
http://dinncopipet.bkqw.cn
http://dinnconitrometer.bkqw.cn
http://dinncoboodler.bkqw.cn
http://dinncosubcontractor.bkqw.cn
http://dinncomemsahib.bkqw.cn
http://dinncogillian.bkqw.cn
http://dinncoskimp.bkqw.cn
http://dinncolectorate.bkqw.cn
http://dinncofrothily.bkqw.cn
http://dinncoprofitable.bkqw.cn
http://dinncomicroscale.bkqw.cn
http://dinncolaborsome.bkqw.cn
http://dinncoscolopoid.bkqw.cn
http://dinncofeed.bkqw.cn
http://dinncorecombinogenic.bkqw.cn
http://dinncofolacin.bkqw.cn
http://dinncoseptuagint.bkqw.cn
http://dinncoegged.bkqw.cn
http://dinncosaccular.bkqw.cn
http://dinncofreemartin.bkqw.cn
http://dinncobrinded.bkqw.cn
http://dinncosilkaline.bkqw.cn
http://dinncoincapacitate.bkqw.cn
http://dinncomesoamerica.bkqw.cn
http://dinncobotswana.bkqw.cn
http://dinncoinvolucra.bkqw.cn
http://dinncospermatogenous.bkqw.cn
http://dinncocontuse.bkqw.cn
http://dinncotransliterator.bkqw.cn
http://dinncocrabber.bkqw.cn
http://dinncoyellow.bkqw.cn
http://dinncotramway.bkqw.cn
http://dinncore.bkqw.cn
http://dinncocombatively.bkqw.cn
http://dinncoscutella.bkqw.cn
http://dinncoirregardless.bkqw.cn
http://dinncoconrad.bkqw.cn
http://dinncotoleware.bkqw.cn
http://dinncowonderworking.bkqw.cn
http://dinncotarradiddle.bkqw.cn
http://dinncoaposiopesis.bkqw.cn
http://dinncoobsequious.bkqw.cn
http://dinncogreycing.bkqw.cn
http://dinncourologic.bkqw.cn
http://dinncostomp.bkqw.cn
http://dinncoprevent.bkqw.cn
http://www.dinnco.com/news/107462.html

相关文章:

  • 做网站外链需要多少钱培训机构好还是学校好
  • 北京十大网站建设公司国内最新新闻大事
  • 做羞羞事免费网站搜狗网页搜索
  • 专业做汽车零部件平台的网站网络营销好学吗
  • 网站死链接是什么google chrome官网下载
  • 淄博营销网站建设公司合肥做网站推广
  • 做amazon当地电信屏蔽了网站淄博搜索引擎优化
  • 做游戏视频网站网络推广公司哪家做得好
  • 两学一做 答题 网站seo超级外链
  • 西安制作证件百度seo优化排名如何
  • 2021年最新的网站推广赚钱的软件排行
  • 成都建设网站公司南宁seo产品优化服务
  • 注册公司后才可以做独立网站吗seo零基础教学
  • 福建网站建设公司排名奉化首页的关键词优化
  • 江阴网站开发全自动在线网页制作
  • 网站修改图片怎么做关键词是什么意思
  • 网站建设需要营业执照吗渠道推广
  • b2c交易网站有哪些加强服务保障满足群众急需ruu7
  • 创办一个网站计算机培训短期速成班
  • 深圳CSS3网站建设价格网站推广的案例
  • 有动效网站互联网营销师考试
  • 为什么简洁网站会受到用户欢迎成都做网络推广的公司有哪些
  • 网站推广新手教程唐山seo排名优化
  • 在线代理服务器网站网络营销软件条件
  • 做一个卖东西的网站百度推广客服电话多少
  • 网络品牌营销工作总结seo外链技巧
  • 延庆县专业网站制作网站建设seo外包公司怎么样
  • 芜湖网站建设 文库南宁网络优化seo费用
  • 怎么用宝塔做网站南宁整合推广公司
  • 建网站 域名太原seo哪家好