状态模式的实际应用
admin
2024-01-28 05:59:36
0

1、状态管理枚举类

/*** OA操作类型状态枚举*/
public enum OaOperateTypeStateEnum {OaEndState(OaOperateType.END.code(), "流程结束状态操作", new OaEndState()),OaInvalidState(OaOperateType.INVALID.code(), "作废流程状态操作", new OaInvalidState());private final String code;private final String desc;private final OaOperateTypeState oaOperateTypeState;OaOperateTypeStateEnum(String code, String desc, OaOperateTypeState oaOperateTypeState) {this.code = code;this.desc = desc;this.oaOperateTypeState = oaOperateTypeState;}public String getCode() {return code;}public String getDesc() {return desc;}public OaOperateTypeState getOaOperateTypeState() {return oaOperateTypeState;}public static OaOperateTypeState getOaOperateTypeStateByCode(String code) {for (OaOperateTypeStateEnum oaOperateTypeStateEnum : OaOperateTypeStateEnum.values()) {if (oaOperateTypeStateEnum.getCode().equals(code)) {return oaOperateTypeStateEnum.getOaOperateTypeState();}}//此处使用空状态模式对非结束和作废状态不进行处理NullOaOperateTypeState nullOaOperateTypeState = new NullOaOperateTypeState();OaOperateTypeContext oaOperateTypeContext = new OaOperateTypeContext();oaOperateTypeContext.set(ContextConstant.OA_OPERATE_TYPE_KEY, code);nullOaOperateTypeState.setOaOperateTypeContext(oaOperateTypeContext);return nullOaOperateTypeState;}
}

2、状态抽象类

public abstract class OaOperateTypeState {/*** OA操作类型状态上下文*/protected OaOperateTypeContext oaOperateTypeContext;public void setOaOperateTypeContext(OaOperateTypeContext oaOperateTypeContext) {this.oaOperateTypeContext = oaOperateTypeContext;}/*** 业务处理*/public abstract void process();}

3、状态上下文


@Data
@EqualsAndHashCode(callSuper = false)
public class OaOperateTypeContext extends Context {/*** 当前的状态*/private OaOperateTypeState oaOperateTypeState;public void setOaOperateTypeState(OaOperateTypeState oaOperateTypeState) {this.oaOperateTypeState = oaOperateTypeState;this.oaOperateTypeState.setOaOperateTypeContext(this);}public void process() {this.oaOperateTypeState.process();}}

4、流程结束状态处理


/*** 流程结束状态处理**/
public class OaEndState extends OaOperateTypeState {@Overridepublic void process() {}
}

5、流程作废状态处理

/*** OA作废时业务状态处理*/
public class OaInvalidState extends OaOperateTypeState {@Overridepublic void process() {}
}

6、业务调用

protected void process(Context context) {String oaOperateType = context.get(ContextConstant.OA_OPERATE_TYPE_KEY);//使用状态模式和空对象模式对不同的业务状态进行不同处理OaOperateTypeContext oaOperateTypeContext = new OaOperateTypeContext();oaOperateTypeContext.setOaOperateTypeState(OaOperateTypeStateEnum.getOaOperateTypeStateByCode(oaOperateType));oaOperateTypeContext.setObjectMap(context.getObjectMap());oaOperateTypeContext.process();}

相关内容

热门资讯

珠宝商投储能,白酒厂配储柜……... 周大福开始做储能了,没错,就是你知道的那个周大福。 2026年4月,周大福创建宣布在芬兰投建储能项...
手握10亿订单却“缺血”?偏科... 文 | 创业最前线 5月28日,苏州天瞳威视电子科技股份有限公司(以下简称“天瞳威视”)向港交所主...
原创 重... 太空探索技术公司SpaceX于2026年6月12日正式登陆纳斯达克完成上市挂牌作业。此举旨在从资本整...
原创 喝... 01 先看一个反直觉的数字。 白酒行业的总产量,从2016年的1358万千升降到了去年的354万千升...
广信科技:高级管理人员变动公告 证券日报网讯 6月18日,广信科技发布公告称,公司于2026年6月16日召开第六届董事会第十次会议,...
原创 金... 老铁们,这两天最扎心的画面大概是:前阵子排队抢金镯子的阿姨们,一回头发现金店挂牌价又降了,算下来一克...
世界杯-维尼修斯传射库尼亚2球... 北京时间6月20日8点30分,2026年世界杯C组次轮,巴西队对阵海地队。上半场第24分钟库尼亚为巴...
原创 巨... 巨化股份 (600160)1998年上市持股28年累计收益率超47倍 1795字 制冷剂价格飙涨至...
见证历史!“AI双雄”碾压茅台... 6月18日,A股市值排名格局迎来重大变化。工业富联(601138.SH)与中际旭创(300308.S...
IPO雷达 | 核心客户也是直... 近日,深交所正式受理上海季丰电子股份有限公司(下称 “季丰电子”)的创业板 IPO 申请。这家深耕半...
6分美国提前出线却未锁小组第一... 北京时间6月20日3:00,世界杯小组赛D组第2轮,美国2-0澳大利亚,喜提6分领跑D组,提前出线,...
有先兆偏头痛的中老年人更易脑卒... 李先生六十多岁,年轻时就有偏头痛,发作时会先看到闪光或视野缺损,随后头痛难忍。最近听邻居说“偏头痛会...
寻找A股低价潜力股,这些方向值... 最近在和朋友聊天时,他突然问我:“如果现在想在A股找一些值得长期关注的标的,有没有哪些是被市场低估、...
原创 6... 下班路上进超市,顺手拿起一箱常温奶,价签写着49.9元。很多人都干过同一个动作:手机一划,打开平台一...
原创 端... 长沙晚报掌上长沙6月19日讯(全媒体记者 曹开阳)6月18日,A股迎来端午节前最后一个交易日,市场整...
美联储:美国上周银行存款19.... 美联储:美国上周银行存款19.354万亿美元,之前一周19.295万亿美元。
阿里收购朴朴,即时零售变局 放下一周的交易疲惫,静下心梳理行业动态与交易逻辑,本篇为大家准备了5条要闻。一、周末要闻导读 1.阿...
原创 6... 连莫斯科核心城区的加油站都开始限量卖油了,打了一千五百多天的战争,代价终于扎扎实实落到俄罗斯普通人的...
场景险龙头白鸽在线启动港股招股... 日前,白鸽在线(厦门)数字科技股份有限公司(简称“白鸽在线”,股票代码“2672”)发布公告,公司自...
贝兰他珠单抗显著延长骨髓瘤无病... 想象一个场景:一位接受过多次治疗的多发性骨髓瘤患者,在复诊时听到医生说“有望无病至少十二个月”。这句...