加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

用Python设计一个请假模式

发布时间:2019-08-15 02:10:35 所属栏目:建站 来源:一码到底
导读:因为你没有效一些计划模式去优化你的代码,以是导致许多小搭档只能把本身的代码重写。这次我们通过告假条来讲讲计划模式-职责模式 一、什么是职责模式 好比我们要告假,我们一样平常都是写个告假条,然后提交给体系!体系会自动按照你的告假的环境,找对应的主

因为你没有效一些计划模式去优化你的代码,以是导致许多小搭档只能把本身的代码重写。这次我们通过告假条来讲讲计划模式-"职责模式"

一、什么是职责模式

好比我们要告假,我们一样平常都是写个告假条,然后提交给体系!体系会自动按照你的告假的环境,找对应的主管去审批。告假条处理赏罚的流程是一环接一环的,就像一个链条一样,全部处理赏罚告假条的人组成了一个职责链条。

用Python计一律个告假模式

职责模式:

  • 职责模式的精妙之处在于把哀求者和接管者解耦了,就是做了分层处理赏罚!哀求者不知道是谁处理赏罚告假条,不必要知道详细的营业逻辑和处理赏罚告假条的链上有几多人,它尽管提交,这样的话体系的机动性和扩展性就很是好,不信我们看拭魅战案例。

二、拭魅战案例

老板让措施员小李去计一律个告假体系,应该怎么计划呢,小李想了想就用上面的职责模式吧,二话不说先画一个UML图,把营业逻辑相关计划出来。

用Python计一律个告假模式

1).计划告假人类

我们把告假人抽象为一个工具,内里属性必定是要著名字,请几多天,告假来由等等.以是Person接口的时辰我们留了三个参数(name,dayoff,reason)。

用Python计一律个告假模式

这个类内里最要害的是setLeader()和request()函数:

  • setLeader的目标配置告假的提交给主管,可是详细是哪一级此外主管你不消管。
  • request的目标是把告假条扔出去,至于这个告假条哪一个级此外主管来批你也不消管,由于用handleRequest()这个函数来处理赏罚。

2).计划主管类

主管的脚色有许多种,好比小组长,部分司理,部分总监,公司老总,HR, 行政总监等等。我们把这些人都抽象提取为一个基类叫主管类。

用Python计一律个告假模式

这个Manager类是基类,首要是处理赏罚get和set NextHandler.就是告假条在一个链条上,必要有一个一层一层提交的相关,好比组长的下一层nextHandler是部分司理,部分司理的下一层处理赏罚是公司老板。

3).详细的几个脚色类

好比我们计划这个告假体系内里有TeamLeader,DeptMaanger,Director等等。

每个的权力纷歧样,好比:

  • 告假2天内的又TeamLeader审批
  • 告假2-10天有部分司理申请
  • 告假10-22天的有研发总监申请

我们举一个例子,好比小组长这个类。它首要是重写了handlerRequest这个类。(各人留意看Pycharm左边有一个蓝色的小圆圈,暗示重写了父类的函数)

用Python计一律个告假模式

DeptMaanger也是相同的,首要在与审批的天数纷歧样。

用Python计一律个告假模式

HR的类首要是处理赏罚挂号存案:

用Python计一律个告假模式

三、测试一下模子

颠末尾上面的类的重重计划,我们的模子应该可以运行了。我们用几个告假条来测一下看看:

用Python计一律个告假模式

>>

Leo 申请告假2天,告假来由:介入谷歌大会

赞成Leo,告假。具名人:Eric,(小组长)

告假申请已经考核,环境属实!已存案处理赏罚.处理赏罚人Tina:行政总监

--------------------------------------------------

Susan 申请告假10天,告假来由:去欧洲旅游,还要去日本泡温泉

赞成Susan,告假。具名人:Leo,(研发司理)

告假申请已经考核,环境属实!已存案处理赏罚.处理赏罚人Tina:行政总监

--------------------------------------------------

Lili 申请告假22天,告假来由:抱病苏息

赞成Lili,告假。具名人:老王,(公司老板)

告假申请已经考核,环境属实!已存案处理赏罚.处理赏罚人Tina:行政总监

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读