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

抖音网站微信官网网址

抖音网站,微信官网网址,wordpress 设置图片大小,仓库管理软件2-Python与设计模式–简单工厂模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上#xff0c;有三类可以选择的上餐品#xff1a; 汉堡等主餐、小食、饮料。当我们选择好自己需要的食物#xff0c;支付完成后#x…2-Python与设计模式–简单工厂模式 一、快餐点餐系统 想必大家一定见过类似于麦当劳自助点餐台一类的点餐系统吧。在一个大的触摸显示屏上有三类可以选择的上餐品 汉堡等主餐、小食、饮料。当我们选择好自己需要的食物支付完成后订单就生成了。 下面我们用今天的主角--工厂模式--来生成这些食物的逻辑主体。 首先来看主餐的生成仅以两种汉堡为例。 class Burger():nameprice0.0def getPrice(self):return self.pricedef setPrice(self,price):self.pricepricedef getName(self):return self.name class cheeseBurger(Burger):def __init__(self):self.namecheese burgerself.price10.0 class spicyChickenBurger(Burger):def __init__(self):self.namespicy chicken burgerself.price15.0其次是小食。内容基本一致 class Snack():name price 0.0type SNACKdef getPrice(self):return self.pricedef setPrice(self, price):self.price pricedef getName(self):return self.nameclass chips(Snack):def __init__(self):self.name chipsself.price 6.0class chickenWings(Snack):def __init__(self):self.name chicken wingsself.price 12.0最后是饮料。 class Beverage():name price 0.0type BEVERAGEdef getPrice(self):return self.pricedef setPrice(self, price):self.price pricedef getName(self):return self.nameclass coke(Beverage):def __init__(self):self.name cokeself.price 4.0class milk(Beverage):def __init__(self):self.name milkself.price 5.0以上的BurgerSnackBeverage都可以认为是该快餐店的产品由于只提供了抽象方法 我们把它们叫抽象产品类而cheese burger等6个由抽象产品类衍生出的子类叫作具体产品类。 接下来“工厂”就要出现了。 class foodFactory():typedef createFood(self,foodClass):print self.type, factory produce a instance.foodInsfoodClass()return foodIns class burgerFactory(foodFactory):def __init__(self):self.typeBURGER class snackFactory(foodFactory):def __init__(self):self.typeSNACK class beverageFactory(foodFactory):def __init__(self):self.typeBEVERAGE同样foodFactory为抽象的工厂类而burgerFactorysnackFactorybeverageFactory为具体的工厂类。 在业务场景中工厂模式是如何“生产”产品的呢 if __name____main__:burger_factoryburgerFactory()snack_factorrysnackFactory()beverage_factorybeverageFactory()cheese_burgerburger_factory.createFood(cheeseBurger)print cheese_burger.getName(),cheese_burger.getPrice()chicken_wingssnack_factorry.createFood(chickenWings)print chicken_wings.getName(),chicken_wings.getPrice()coke_drinkbeverage_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_burgersimpleFoodFactory.createFood(spicyChickenBurger) 这样省去了将工厂实例化的过程。这种模式就叫做简单工厂模式。 还是在上述例子中createFood方法中必须传入foodClass才可以指定生成的food实例种类如果将每一个细致的产品 都建立对应的工厂如cheeseBurger建立对应一个cheeseBurgerFactory这样生成食物时foodClass也不必指 定。事实上此时burgerFactory就是具体食物工厂的一层抽象。这种模式就是抽象工厂模式。 三、工厂模式的优点和应用 工厂模式、抽象工厂模式的优点 1、工厂模式巨有非常好的封装性代码结构清晰在抽象工厂模式中其结构还可以随着需要进行更深或者更浅 的抽象层级调整非常灵活 2、屏蔽产品类使产品的被使用业务场景和产品的功能细节可以分而开发进行是比较典型的解耦框架。工厂模式、抽象工厂模式的使用场景 1、当系统实例要求比较灵活和可扩展时可以考虑工厂模式或者抽象工厂模式实现。比如 在通信系统中高层通信协议会很多样化同时上层协议依赖于下层协议那么就可以对应建立对应层级的抽 象工厂根据不同的“产品需求”去生产定制的实例。四、工厂类模式的不足 1、工厂模式相对于直接生成实例过程要复杂一些所以在小项目中可以不使用工厂模式 2、抽象工厂模式中产品类的扩展比较麻烦。毕竟每一个工厂对应每一类产品产品扩展就意味着相应的抽 象工厂也要扩展
http://www.dnsts.com.cn/news/242920.html

相关文章:

  • 收费下载网站源码主流网站
  • 接入备案和增加网站asp.net网站项目建设
  • dedecms 调用 两个网站小程序商城哪个平台好
  • 网页设计师个人简历移动网站优化
  • 最好的科技网站建设深圳交易网站建设
  • 做ppt模仿网站设计网站建设图片
  • 网站没有icp备案是不是就是骗子没备案可以做网站么
  • 简单的网站建立怎么做网络公司网站建设首页
  • 织梦网站开发语言如何查询网站域名过期
  • 外贸响应式网站设计网站链接数怎么做
  • 建网站和app天元建设集团有限公司鲁班奖
  • 国外做ae模板网站大全网站开发的软件
  • 网站建设关键字优化定制鱼缸一般多少钱
  • 汕头房产网站建设网站后台怎么修改密码
  • 制作网页的网站哪个好用网络营销常见的工具
  • 房山营销型网站建设中文域名交易网站
  • 企业做网站多少钱外墙清洗
  • 网站做的漂亮的企业网址提交收录
  • 专业企专业企业网站设计搜索引擎网站分析
  • 幸运飞艇网站建设网站建设与管理专业就业前景
  • 注册或者浏览社交类网站时不恰当东莞建设培训中心网站
  • 中国建设银行网站无法访问临沂网站制作加速企业发展
  • 自己做的手机网站怎么加入小程序建设局查询网站首页
  • 旅游网站的建设方案seo网站推广经理招聘
  • 十堰建设局网站电脑技术学习网站
  • 做生意的网站做网站赚谁的钱
  • 网站建设注意细节东莞seo推广
  • swiper做的网站建设人才网站
  • 武宁县建设工程招标公告门户网站百度站长怎样添加网站
  • 做网站是属火的职业吗上海网站设计外包