工作流中的请假流程
某人提出请假申请,先由项目经理审批,如果项目经理不同意,审批就直接结束
如项目经理同意,再看是否超过3天,如果三天以内,审批直接结束
否则,交给部门经理,部门经理审核后,无论是否同意,审批直接结束


状态类

package 状态模式;public abstract class State {public abstract void shenPi(Work w);
}

项目经理类,继承了状态类,并实现了状态由项目经理审批转移至部门经理审批:

package 状态模式;public class ProjectManager extends State {@Overridepublic void shenPi(Work w) {if(w.isManagermentAccept()==false){System.out.println("项目经理不同意,审批结束!");}else{if(w.getDay()<=3){System.out.println("请假时间在三天以内,项目经理同意,审批结束");}else{System.out.println("请假时间大于三天,移交给部门经理处理!");w.setCurrent(new PartmentMeneger());w.shenPi();}}}
}

部门经理类:

package 状态模式;public class PartmentMeneger extends State {@Overridepublic void shenPi(Work w) {System.out.println("已经过部门经理审批,审批结束!");}
}

工作类,拥有一个State的对象,在shenPi方法中将自己回传给State:

package 状态模式;public class Work {private State current;private int day;private boolean isManagermentAccept;public Work() {current = new ProjectManager();}public State getCurrent() {return current;}public void setCurrent(State current) {this.current = current;}public int getDay() {return day;}public void setDay(int day) {this.day = day;}public boolean isManagermentAccept() {return isManagermentAccept;}public void setManagermentAccept(boolean isManagermentAccept) {this.isManagermentAccept = isManagermentAccept;}public void shenPi(){current.shenPi(this);}
}

客户端测试一下:

package 状态模式;public class Test {public static void main(String [] args){Work w = new Work();w.setDay(4);w.setManagermentAccept(true);w.shenPi();}
}

状态模式实例请假流程相关推荐

  1. 设计模式-请假流程-责任链模式

    责任链模式的定义 ​ 首先我们可以先看一下责任链模式的定义: ​ Avoid coupling the sender of a request to its receiver by giving mo ...

  2. Head First设计模式读书笔记九 第十章 状态模式

    过去的笔记链接 https://blog.csdn.net/u011109881/article/details/60158137 状态模式实例 用Java设计糖果机吧 大致流程: 上图中,有四种状态 ...

  3. 简易理解设计模式之:责任链模式——OA中请假流程示例

    介绍: 责任链模式属于行为型设计模式.它的定义为:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止. 类图: ...

  4. java改写模式_Java基于状态模式实现的文档编辑模式切换功能实例

    本文实例讲述了Java基于状态模式实现的文档编辑模式切换功能.分享给大家供大家参考,具体如下: 一 模式定义 状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来就像是改变了其类. 二 ...

  5. 策略模式、观察者模式、状态模式原理及实例

    策略模式 基本介绍 策略模式(Strategy Pattern)中,定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 这算法体现了几个设计原则. 第一 把变化的 ...

  6. springboot集成flowable创建请假流程实例

    springboot如何集成flowable,如何部署flowable在线编辑器画bpm图以及bpm图的画法,我在上一篇博客中写了,这里直接上代码(源码地址:晚安/flowable_holiday ( ...

  7. 『设计模式』状态模式(不起花里胡哨的名字了)

    23种设计模式+额外常用设计模式汇总 (持续更新) 状态模式 允许一个对象在其内部状态改变时改变它的行为,这个对象看起来似乎修改了它的类. 状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复 ...

  8. 【转】设计模式 ( 十七) 状态模式State(对象行为型)

    设计模式 ( 十七) 状态模式State(对象行为型) 1.概述 在软件开发过程中,应用程序可能会根据不同的情况作出不同的处理.最直接的解决方案是将这些所有可能发生的情况全都考虑到.然后使用if... ...

  9. Activiti工作流(一):OA 上的那些请假流程如何快速实现呢?

    大家好,我是 杰哥 在公司中,每个人都需要经常创建或者审批一些流程,比如说转正申请.请假流程.出差申请等等 那么,你有没有想过,要是你,你会如何实现这些流程的控制逻辑呢? 比如说请假申请,首先需要提前 ...

最新文章

  1. Docker下使用jstat查看jvm的GC信息
  2. Java Spring Boot VS .NetCore (七) 配置文件
  3. oracle nvachar 长度,Oracle中varchar、varchar2和nvarchar、nvarchar2
  4. LeetCode 118. Pascal’s Triangle
  5. cgroup代码浅析(1)
  6. vim的ex模式介绍
  7. kali foremost 分离文件_只需 1 分钟,这个网站用 AI 分离歌曲的人声、伴奏和乐器声...
  8. usb 驱动之usbip
  9. 暴力法——猴子分桃-源代码 c语言实现
  10. A problem has been detected and windows has been shut down to prevent damage to your computer.
  11. Android Studio应用Freeline光速编译APK
  12. android 设置组件背景图片,Android TextView背景颜色与背景图片设置
  13. 小程序map的自定义图标不显示问题
  14. ReRes 谷歌浏览器插件使用
  15. jasperReport:Eclipse-Ireport插件安装及基本使用
  16. springboot基于java的基金分析系统的设计与实现
  17. Harris角点及Shi-Tomasi角点检测
  18. 推挽输出、开漏输出和悬空输入等
  19. 多线程有几种实现方法?同步有几种实现方法
  20. Android 获得手机屏幕大小

热门文章

  1. Python3三个简单练手小游戏
  2. junit关于Test class can only have one constructor的报错
  3. 小米手机与计算机如何连接网络连接,小米手机怎么通过电脑上网如何将手机与电脑相连...
  4. ReactNative 接talkingdata统计
  5. SAX错误–序言中不允许包含内容
  6. Ctf新生赛misc“easy_osint”
  7. 有没有人知道芯讯通sim8100的Enhanced COM port是干嘛的
  8. dhcp服务器修改dns设置方法,dhcp服务器的dns设置方法
  9. 使用Python+Pandas+Statsmodels建立线性回归模型预测房价
  10. windows下搭建ITS运行环境