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

怎样自己免费建设一个网站推荐好用的分销平台

怎样自己免费建设一个网站,推荐好用的分销平台,常州做网站要多少钱,合肥最新消息今天23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…

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

13-Python与设计模式–责任链模式

一、请假系统

假设有这么一个请假系统:员工若想要请3天以内(包括3天的假),只需要直属经理批准就可以了;
如果想请3-7天,不仅需要直属经理批准,部门经理需要最终批准;如果请假大于7天,不光要前两个经理批准,
也需要总经理最终批准。类似的系统相信大家都遇到过,那么该如何实现呢?首先想到的当然是ifelse…,
但一旦遇到需求变动,其臃肿的代码和复杂的耦合缺点都显现出来。简单分析下需求,“假条”在三个经理间是
单向传递关系,像一条链条一样,因而,我们可以用一条“链”把他们进行有序连接。

构造抽象经理类和各个层级的经理类:

class manager():successor = Nonename = ''def __init__(self, name):self.name = namedef setSuccessor(self, successor):self.successor = successordef handleRequest(self, request):pass
class lineManager(manager):def handleRequest(self, request):if request.requestType == 'DaysOff' and request.number <= 3:print '%s:%s Num:%d Accepted OVER' % (self.name, request.requestContent, request.number)else:print '%s:%s Num:%d Accepted CONTINUE' % (self.name, request.requestContent, request.number)if self.successor != None:self.successor.handleRequest(request)
class departmentManager(manager):def handleRequest(self, request):if request.requestType == 'DaysOff' and request.number <= 7:print '%s:%s Num:%d Accepted OVER' % (self.name, request.requestContent, request.number)else:print '%s:%s Num:%d Accepted CONTINUE' % (self.name, request.requestContent, request.number)if self.successor != None:self.successor.handleRequest(request)
class generalManager(manager):def handleRequest(self, request):if request.requestType == 'DaysOff':print '%s:%s Num:%d Accepted OVER' % (self.name, request.requestContent, request.number)
class request():requestType = ''requestContent = ''number = 0

request类封装了假期请求。在具体的经理类中,可以通过setSuccessor接口来构建“责任链”,
并在handleRequest接口中实现逻辑。

场景类中实现如下:

if  __name__=="__main__":line_manager = lineManager('LINE MANAGER')department_manager = departmentManager('DEPARTMENT MANAGER')general_manager = generalManager('GENERAL MANAGER')line_manager.setSuccessor(department_manager)department_manager.setSuccessor(general_manager)req = request()req.requestType = 'DaysOff'req.requestContent = 'Ask 1 day off'req.number = 1line_manager.handleRequest(req)req.requestType = 'DaysOff'req.requestContent = 'Ask 5 days off'req.number = 5line_manager.handleRequest(req)req.requestType = 'DaysOff'req.requestContent = 'Ask 10 days off'req.number = 10line_manager.handleRequest(req)

打印如下:

LINE MANAGER:Ask 1 day off Num:1 Accepted OVER LINE MANAGER:Ask 5 days
off Num:5 Accepted CONTINUE DEPARTMENT MANAGER:Ask 5 days off Num:5
Accepted OVER LINE MANAGER:Ask 10 days off Num:10 Accepted CONTINUE
DEPARTMENT MANAGER:Ask 10 days off Num:10 Accepted CONTINUE GENERAL
MANAGER:Ask 10 days off Num:10 Accepted OVER

二、责任链模式

责任链模式的定义如下:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。
将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。需要说明的是,责任链模式中的应该只有一个处理者,也就是说,本例中的“最终批准”为该对象所谓的“请求处理”。

三、责任链模式的优点和应用场景

优点:
1、将请求者与处理者分离,请求者并不知道请求是被哪个处理者所处理,易于扩展。应用场景:
1、若一个请求可能由一个对请求有链式优先级的处理群所处理时,可以考虑责任链模式。除本例外,银行的客户请求处理系统也可以用责任链模式实现(VIP客户和普通用户处理方式当然会有不同)。

四、责任链模式的缺点

1、如果责任链比较长,会有比较大的性能问题;
2、如果责任链比较长,若业务出现问题,比较难定位是哪个处理者的问题。
http://www.yayakq.cn/news/450754/

相关文章:

  • 重庆网站建设哪家有芒果国际影城星沙店
  • 专业做轴承的网站企业网站项目流程
  • 有偿做设计的网站电子商务网站建设参考文献书籍
  • 微信网站搭建哪家好七色鱼设计平台
  • 查询网站网站后台管理系统源代码
  • phpcms手机网站怎么做济南建设信息网站
  • 大连网站优化多少钱wordpress底部导航
  • 长沙做暑假实践活动网站食品包装
  • 河源网站制作微信小程序什么时候上线的
  • 网站开发时浮动框的代码wordpress+粘贴表格
  • 湛江做网站从株洲手机网站建设
  • 定兴网站建设公司找大学生做网站
  • wordpress网店主题下载二十条优化措施全文
  • 网页制作与网站建设试题无锡企业做网站
  • 企梦网站建设织梦网站源码下载
  • 诚聘高新网站开发工程师做it行业招标网站有哪些
  • 网站服务器租用和自己搭建的区别教学网站开发应用指导方案
  • 网站建设公司公司好王野天津音乐广播电台图片
  • 做金融网站拘留多久四川网站建设 四川冠辰科技
  • 中国企业网站查询益阳网页设计
  • 深圳中高端网站建设怎么样广东省建设局官方网站
  • 平阳县住房和城乡规划建设局网站在什么网站能找到做外贸的邮箱
  • 网站商城微信支付wordpress 主题翻译
  • 淮安建设局网站wordpress 缩略图作用
  • 国外网站平台有哪些网上去哪里找做网站的
  • 湖南网站设计制作如何做好集团网站建设
  • 免费免费网站模板下载网站简述网站制作流程图
  • 024 网站推广开发网站开发
  • 如何做淘宝优惠卷网站长沙网久wordpress
  • 网站怎么可以被收录泉州网站制作设计