状态机(FSM)、状态模式在金融支付系统中的应用(二)


前言

上一篇文章 “状态机(FSM)、状态模式在金融支付系统中的应用(一)” 中粗略的讲了一下状态机和状态模式的概念,但是实际工作中代码怎么写估计很多人还云里雾里,下面会以代码的方式真正展示一下实际工作中状态模式和状态机的使用,写法有很多这里我展示一种比较容易理解和操作的。

1.将UML转化成实际的代码

还是回归状态模式的UML图:
在这里插入图片描述
这里我们可以分析一下关键点:

Context的是一个聚合状态的类,持有所有状态相当于一个状态管理者
State是一个抽象的状态,里面可以定义一些获取状态的方法等,子类可以进行覆盖


找到了关键点接下来我们以一个简化后的退款状态机为例子展开:
在这里插入图片描述
1.先定义一个Context用于维护状态本身,这里我们能看到context本身还可以增加类似于通知mq发email消息等扩充功能。

public abstract class AbstractContext {
   
    //下个状态
    public abstract void doNext(String result);
    //获取当前状态
    public abstract String status();
    //状态顺序
	public abstract Integer order();
	
	public void notifyEmial() throws Exception {
   
		//发送email通知
	}
	public void notifyMQ() throws Exception {
   
		//通知mq
	}
}

2.然后我们建一个退费的Context,他持有所有的状态,对外统一处理管理实现了高内聚

public class RefundContext extends AbstractContext{
   
	//下面就是不同的状态
	public final RefundState APPLIED = new ApplyState(this);
	public final RefundState PROCESSING = new ProcessState(this);  
    public final RefundState SUCCESS = new SuccessState(this);
    public final RefundState FAILURE = new FailState(this);
    public fi
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值