python 请假审批系统_菜鸟也要懂点设计模式|用Python设计一个请假模式
很多同学学Python一段时间了,但是总感觉自己的写代码不好维护,或者时间长了一旦增加需求或者需要扩展功能,发现自己写的代码就是一团糟!尽管也代码不断的重构了,好像也遵循了PEP8的风格,为啥代码量一旦大了就乱了呢,因为你没有用武林秘籍“设计模式”呀。
由于你没有用一些设计模式去优化你的代码,所以导致很多小伙伴只能把自己的代码重写。这次我们通过请假条来讲讲设计模式-"职责模式"
一
什么是职责模式
比如我们要请假,我们一般都是写个请假条,然后提交给系统!系统会自动根据你的请假的情况,找对应的主管去审批。请假条处理的流程是一环接一环的,就像一个链条一样,所有处理请假条的人构成了一个职责链条。
职责模式:
职责模式的精妙之处在于把请求者和接受者解耦了,就是做了分层处理!请求者不知道是谁处理请假条,不需要知道具体的业务逻辑和处理请假条的链上有多少人,它只管提交,这样的话系统的灵活性和扩展性就非常好,不信我们看实战案例。
二
实战案例
老板让程序员小李去设计一个请假系统,应该怎么设计呢,小李想了想就用上面的职责模式吧,二话不说先画一个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:行政总监
学习设计模式的过程是非常痛苦的,因为不是立竿见影,有的时候学了会忘,因为是练习心法,会比修炼Python技巧招式要难的很多。
需要反反复复的练习,拆解,合成,再拆解,要好好研究,尤其是从菜鸟进阶为高手,代码的架构能力很重要。
长按二维码关注
公众号「跟我学Python」
你点一个在看
python 请假审批系统_菜鸟也要懂点设计模式|用Python设计一个请假模式相关推荐
- python 请假审批系统_基于工作流的请假审批系统设计与实现
标[ ].系统结合单位的实际工作情况,应用工作流技术来实现无纸化请假,提供效率, 降低成本.文章以学生请假审批系统的详细设计与实现为背景,介绍了工作流技术的实现方 法. 1 系统需求分析 本系统主要是 ...
- python股票分析系统_熬了一晚上,小白用Python写了一个股票提醒系统
码农小马七夕节去相亲了,见了一个不错的姑娘,长的非常甜美!聊着聊着很投缘!通过介绍人了解到,对方也很满意--想着自己单身多年的生活就要结束啦,心里满是欢喜,美美哒!但是突然想起年初还有几万块在股市里面 ...
- python股票全套系统_熬了一晚上,小白用Python写了一个股票提醒系统
码农小马七夕节去相亲了,见了一个不错的姑娘,长的很是甜美!聊着聊着很投缘!通过介绍人了解到,对方也很满意--想着自己单身多年的生活就要结束啦,心里满是欢喜,美美哒!可是突然想起年初还有几万块在股市里面 ...
- python实现秒杀系统_双十一买买买,教你用Python实现秒杀系统
原标题:双十一买买买,教你用Python实现秒杀系统 简书博客地址: https://www.jianshu.com/u/8f4d80000566 架构搭建是重点,代码或语言实现较简单. 本篇用pyt ...
- python开发bs系统_一文告诉你,如何使用Python构建一个“谷歌搜索”系统|内附代码...
来源 | hackernoon 编译 | 武明利 责编 | Carol 在这篇文章中,我将向您展示如何使用Python构建自己的答案查找系统.基本上,这种自动化可以从图片中找到多项选择题的答案. 有一 ...
- python写股票指标_一文看懂KDJ指标及Python实现
KDJ指标又叫随机指标,是一种非常实用的技术分析指标,被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具. 随机指标KDJ是根据统计学原理,在一个特定的周期(常为9日.9周等),以 ...
- java-net-php-python-77ssm学生请假审批系统计算机毕业设计程序
java-net-php-python-77ssm学生请假审批系统计算机毕业设计程序 java-net-php-python-77ssm学生请假审批系统计算机毕业设计程序 本源码技术栈: 项目架构:B ...
- Smartbi企业流程审批系统_流程审批软件推荐
日常工作的各种办公场景中经常需要使用到流程,并且不同部门不同工作内容的流程都会有不同,思迈特软件Smartbi流程审批系统提供一整套完备的流程模块,可以实现工作中流程的灵活审批及动态流转. 学习审核流 ...
- python是什么系统_最齐全、最系统的python教程
python教程(后面有彩蛋) python教程目录 学python都用来干嘛的? 主要就是"简单啊"."收入高啊"."人生苦短,我用Python&q ...
最新文章
- IIS日志清理CMD版,VBS版,JS版,WSH版
- 重读经典:完全解析特征学习大杀器ResNet
- .net数据根据字段进行分类(linq语句)
- 超有用的 java面试题
- nodejs——URL 基础API
- python基础知识-8-三元和一行代码(推导式)
- 21.Merge Two Sorted Lists 、23. Merge k Sorted Lists
- 使用ODAC调用ORACLE的自定义函数和存储过程
- 马斯克再创历史!人类首个商业载人飞船发射成功:移民火星又近一步
- e - 数据结构实验之查找五:平方之哈希表_面试中常被问到的Hash表,你了解吗
- apache点NET环境
- linux驱动编写(虚拟字符设备编写)
- 谷歌大脑AutoML最新进展:不断进化的阿米巴网络
- 基于16QAM调制的OFDM系统仿真实现
- VC和gcc在保证功能static对线程安全的差异变量
- 乱码(四): 撬动地球的支点
- 游戏制作大师RPGMAKER MV/MZ安装DLC的方法
- linux音频设备id,ubuntu下提取DSDT SSDT和声卡ID _ 黑苹果乐园
- 计算机应用选购哪些电脑,购买电脑有哪些要注意的
- php throw,PHP的Try, throw 和 catch简单用法
热门文章
- 【完全信息静态博弈-Nash均衡的特性】
- 为intent添加FLAG_EXCLUDE_STOPPED_PACKAGES标记
- 高质量文章导航-持续更新中
- CoordinatorLayout + AppBarLayout + CollapsingToolbarLayout
- 将自定义程序写入U盘引导区,并在真机执行
- [解读] GTN: Generative Teaching Networks
- Java程序的编辑、编译、运行
- 示波器波形保存至PC端的设置
- [单片机框架][bsp层][cx32l003][bsp_adc] ADC配置和使用
- 分布式监控:zabbix trapper方式监控