您现在的位置是:亿华云 > 域名
用Python设计一个请假模式
亿华云2025-10-08 23:33:58【域名】4人已围观
简介由于你没有用一些设计模式去优化你的代码,所以导致很多小伙伴只能把自己的代码重写。这次我们通过请假条来讲讲设计模式-"职责模式"一、什么是职责模式比如我们要请假,我们一般都是写个请假条,然后提交给系统!
由于你没有用一些设计模式去优化你的请假代码,所以导致很多小伙伴只能把自己的模式代码重写。这次我们通过请假条来讲讲设计模式-"职责模式"
一、请假什么是模式职责模式
比如我们要请假,我们一般都是请假写个请假条,然后提交给系统!系统会自动根据你的模式请假的情况,找对应的请假主管去审批。请假条处理的模式流程是一环接一环的,就像一个链条一样,请假所有处理请假条的模式人构成了一个职责链条。
职责模式:
职责模式的请假精妙之处在于把请求者和接受者解耦了,就是模式做了分层处理!请求者不知道是谁处理请假条,不需要知道具体的请假业务逻辑和处理请假条的链上有多少人,它只管提交,模式这样的请假话系统的灵活性和扩展性就非常好,不信我们看实战案例。服务器托管二、实战案例
老板让程序员小李去设计一个请假系统,应该怎么设计呢,小李想了想就用上面的职责模式吧,二话不说先画一个UML图,把业务逻辑关系设计出来。
1).设计请假人类
我们把请假人抽象为一个对象,里面属性肯定是要有名字,请多少天,请假理由等等.所以Person接口的时候我们留了三个参数(name,dayoff,reason)。
这个类里面最关键的是setLeader()和request()函数:
setLeader的目的设置请假的提交给主管,但是具体是哪一级别的主管你不用管。 request的目的是把请假条扔出去,至于这个请假条哪一个级别的主管来批你也不用管,因为用handleRequest()这个函数来处理。2).设计主管类
主管的角色有很多种,比如小组长,亿华云部门经理,部门总监,公司老总,HR, 行政总监等等。我们把这些人都抽象提取为一个基类叫主管类。
这个Manager类是基类,主要是处理get和set NextHandler.就是请假条在一个链条上,需要有一个一层一层提交的关系,比如组长的下一层nextHandler是部门经理,部门经理的下一层处理是公司老板。
3).具体的几个角色类
比如我们设计这个请假系统里面有TeamLeader,DeptMaanger,Director等等。
每个的权利不一样,比如:
请假2天内的又TeamLeader审批 请假2-10天有部门经理申请 请假10-22天的有研发总监申请我们举一个例子,比如小组长这个类。它主要是重写了handlerRequest这个类。(大家注意看Pycharm左边有一个蓝色的小圆圈,表示重写了父类的函数)
DeptMaanger也是类似的,站群服务器主要在与审批的天数不一样。
HR的类主要是处理登记备案:
三、测试一下模型
经过了上面的类的重重设计,我们的模型应该可以运行了。我们用几个请假条来测一下看看:
>>
Leo 申请请假2天,请假理由:参加谷歌大会
同意Leo,请假。签字人:Eric,(小组长)
请假申请已经审核,情况属实!已备案处理.处理人Tina:行政总监
--------------------------------------------------
Susan 申请请假10天,请假理由:去欧洲旅游,还要去日本泡温泉
同意Susan,请假。签字人:Leo,(研发经理)
请假申请已经审核,情况属实!已备案处理.处理人Tina:行政总监
--------------------------------------------------
Lili 申请请假22天,请假理由:生病休息
同意Lili,请假。签字人:老王,(公司老板)
请假申请已经审核,情况属实!已备案处理.处理人Tina:行政总监
很赞哦!(41969)
相关文章
- 公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。
- DevSecOps五个需要关注的编码问题
- 终于有人把知识图谱讲明白了
- 22 个拓展程序员技术与视野的国外网站!奇怪的知识又增加了!
- 3、查看排名
- 手把手教你用Python爬取百度搜索结果并保存
- VR,正在上演一出“风月宝鉴”
- 理科生的浪漫:NASA 毅力号降落伞上的二进制信息
- 付款完成后,您只需耐心等待,如果您注册成功,系统会提示您。这里需要注意的是,域名是一个即时产品,只有在最终付款成功时才能预订,注册成功后不能更改。
- 那些 Go 语言实现的语言现在发展怎么样了?