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

南皮 网站门户网站开发要求

南皮 网站,门户网站开发要求,淘宝网站品牌设计,河北省和城乡住房建设厅网站10-Python与设计模式–享元模式 一、网上咖啡选购平台 假设有一个网上咖啡选购平台#xff0c;客户可以在该平台上下订单订购咖啡#xff0c;平台会根据用户位置进行 线下配送。假设其咖啡对象构造如下#xff1a; class Coffee:name price 0def __init__(self,name):se…10-Python与设计模式–享元模式 一、网上咖啡选购平台 假设有一个网上咖啡选购平台客户可以在该平台上下订单订购咖啡平台会根据用户位置进行 线下配送。假设其咖啡对象构造如下 class Coffee:name price 0def __init__(self,name):self.name nameself.price len(name) # 在实际业务中咖啡价格应该是由配置表进行配置或者调用接口获取等方式得到# 此处为说明享元模式将咖啡价格定为名称长度只是一种简化def show(self):print Coffee Name:%s Price:%s%(self.name,self.price)其对应的顾客类如下 class Customer:namedef __init__(self,name):self.namenamedef order(self,coffee_name):print %s ordered a cup of coffee:%s%(self.name,coffee_name)return Coffee(coffee_name)按照一般的处理流程用户在网上预订咖啡其代表用户的Customer类中生成一个Coffee类 直到交易流程结束。整个流程是没有问题的。如果随着网站用户越来越多单位时间内购买咖啡的用户 也越来越多并发量越来越大对系统资源的消耗也会越来越大极端情况下会造成宕机等严重后果。 此时高效利用资源就显得非常重要了。简单分析下业务流程高并发下用户数量增加而该模型下每个用户点一杯咖啡就会产生一个咖啡实例 如果一种咖啡在该时间内被很多用户点过那么就会产生很多同样咖啡的实例。避免重复实例的出现 是节约系统资源的一个突破口。类似于单例模式我们这里在咖啡实例化前增加一个控制实例化的类 咖啡工厂。class CoffeeFactory():coffee_dict {}def getCoffee(self, name):if self.coffee_dict.has_key(name) False:self.coffee_dict[name] Coffee(name)return self.coffee_dict[name]def getCoffeeCount(self):return len(self.coffee_dict)咖啡工厂中getCoffeeCount直接返回当前实例个数。Customer类可以重写下如下 class Customer:coffee_factorynamedef __init__(self,name,coffee_factory):self.namenameself.coffee_factorycoffee_factorydef order(self,coffee_name):print %s ordered a cup of coffee:%s%(self.name,coffee_name)return self.coffee_factory.getCoffee(coffee_name)假设业务中短时间内有多人订了咖啡业务模拟如下 if __name____main__:coffee_factoryCoffeeFactory()customer_1Customer(A Client,coffee_factory)customer_2Customer(B Client,coffee_factory)customer_3Customer(C Client,coffee_factory)c1_cappcustomer_1.order(cappuccino)c1_capp.show()c2_mochacustomer_2.order(mocha)c2_mocha.show()c3_cappcustomer_3.order(cappuccino)c3_capp.show()print Num of Coffee Instance:%s%coffee_factory.getCoffeeCount()打印如下 A Client ordered a cup of coffee:cappuccino Coffee Name:cappuccino Price:10 B Client ordered a cup of coffee:mocha Coffee Name:mocha Price:5 C Client ordered a cup of coffee:cappuccino Coffee Name:cappuccino Price:10 Num of Coffee Instance:2 根据结果可以得知该模式下三个用户点了两种咖啡最终的咖啡实例为2而不是3。 二、享元模式 享元模式定义如下使用共享对象支持大量细粒度对象。大量细粒度的对象的支持共享可能会涉及这些对象的 两类信息内部状态信息和外部状态信息。内部状态信息就是可共享出来的信息它们存储在享元对象内部 不会随着特定环境的改变而改变外部状态信息就不可共享的信息了。享元模式中只包含内部状态信息 而不应该包含外部状态信息。这点在设计业务架构时应该有所考虑。三、享元模式的优点和使用场景 优点 1、减少重复对象大大节约了系统资源。使用场景 1、系统中存在大量的相似对象时可以选择享元模式提高资源利用率。咖啡订购平台比较小若假设一个电商平台每个买家和卖家建立起买卖关系后买家对象和卖家对象都是占用资源的。如果一个卖家同时与多个买家建立起买卖关系呢此时享元模式的优势就体现出来了 2、需要缓冲池的场景中可以使用享元模式。如进程池线程池等技术就可以使用享元模式事实上很多的池技术中已经使得了享元模式。四、享元模式的缺点 1、享元模式虽然节约了系统资源但同时也提高了系统的复杂性尤其当遇到外部状态和内部状态混在一起时需要先将其进行分离才可以使用享元模式。否则会引起逻辑混乱或业务风险 2、享元模式中需要额外注意线程安全问题。
http://www.lebaoying.cn/news/54045.html

相关文章:

  • 设计素材免费下载网站有哪些dedecms导入网站
  • 个人免费网站建设百度收录申请
  • phpcmsv9蓝色简洁下载网站模板深圳市南山区网站建设
  • 装修网站怎么做按效果付费的网络推广方式
  • 成都 企业 网站建设网站空间500M
  • 龙岗商城网站建设教程wordpress能批量上传图片么
  • 山西响应式网站设计wordpress 采集主题
  • wordpress电影网站手机网站用模版
  • 学生个人网页设计作品搜索引擎优化什么意思
  • 自己怎么样建网站福利站wordpress
  • 怎么做外国网站网站建设和维护合同
  • python 做的网站有哪些wordpress漏洞框架
  • 网站排名优化六安城市网新闻
  • 属于网站设计内容的是网站原创性
  • 同一个域名在一个服务器做两件网站长沙网站建设长沙网站制作
  • 网站开发成本如何账务处理网站没备案可以做淘宝客吗
  • 深圳网站设计公司哪个好青岛网络推广建站
  • 苏州网站建设渠道品牌设计全案
  • 山东省建设厅招标网站首页高端营销型网站制作
  • 珠海建站模板搭建南京哪家网络公司做网站优化好
  • 网站建设经济效益上海优化关键词的公司
  • 做网站字体网站开发 用户角色
  • 网站 建设 申请网站子目录怎么做
  • 百家号如何给网站做推广关键词资源
  • 网站设计权限多国语言网站模板
  • 网站建设教程特别棒湖南岚鸿权 威我的小程序怎么制作
  • 做类似淘宝的网站设计需要什么网站多域名怎么做
  • wordpress后台不见windows优化大师官方网站
  • 手机搜索和网站搜索的排名个人简历表
  • 米拓建站最新进展制作一个学校门户网站