用Python设计一个请假模式
由于你没有用一些设计模式去优化你的代码,所以导致很多小伙伴只能把自己的代码重写。这次我们通过请假条来讲讲设计模式-"职责模式" 一、什么是职责模式 比如我们要请假,我们一般都是写个请假条,然后提交给系统!系统会自动根据你的请假的情况,找对应的主管去审批。请假条处理的流程是一环接一环的,就像一个链条一样,所有处理请假条的人构成了一个职责链条。 职责模式:
二、实战案例 老板让程序员小李去设计一个请假系统,应该怎么设计呢,小李想了想就用上面的职责模式吧,二话不说先画一个UML图,把业务逻辑关系设计出来。 1).设计请假人类 我们把请假人抽象为一个对象,里面属性肯定是要有名字,请多少天,请假理由等等.所以Person接口的时候我们留了三个参数(name,dayoff,reason)。 这个类里面最关键的是setLeader()和request()函数:
2).设计主管类 主管的角色有很多种,比如小组长,部门经理,部门总监,公司老总,HR, 行政总监等等。我们把这些人都抽象提取为一个基类叫主管类。 这个Manager类是基类,主要是处理get和set NextHandler.就是请假条在一个链条上,需要有一个一层一层提交的关系,比如组长的下一层nextHandler是部门经理,部门经理的下一层处理是公司老板。 3).具体的几个角色类 比如我们设计这个请假系统里面有TeamLeader,DeptMaanger,Director等等。 每个的权利不一样,比如:
我们举一个例子,比如小组长这个类。它主要是重写了handlerRequest这个类。(大家注意看Pycharm左边有一个蓝色的小圆圈,表示重写了父类的函数) DeptMaanger也是类似的,主要在与审批的天数不一样。 HR的类主要是处理登记备案: 三、测试一下模型 经过了上面的类的重重设计,我们的模型应该可以运行了。我们用几个请假条来测一下看看: >> Leo 申请请假2天,请假理由:参加谷歌大会 同意Leo,请假。签字人:Eric,(小组长) 请假申请已经审核,情况属实!已备案处理.处理人Tina:行政总监 -------------------------------------------------- Susan 申请请假10天,请假理由:去欧洲旅游,还要去日本泡温泉 同意Susan,请假。签字人:Leo,(研发经理) 请假申请已经审核,情况属实!已备案处理.处理人Tina:行政总监 -------------------------------------------------- Lili 申请请假22天,请假理由:生病休息 同意Lili,请假。签字人:老王,(公司老板) 请假申请已经审核,情况属实!已备案处理.处理人Tina:行政总监
(编辑:上饶站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |