JAVA设计模式(十九)设计模式之状态设计模式

前言

      本章讲解设计模式中状态设计模式的相关知识

方法

1.概念

大家都知道,我们日常生活和工作开发中都有状态的问题。你比如说马路上的红绿灯,这三个灯光就属于三种状态。再比如说我目前开发过的公文系统,公文的各个审批环节就是状态,拟办、初审、复审、流转、办结等。

本次将会使用公文系统中状态作为例子,这里简化为拟办、流转、办结三种状态。

在以往的概念里,我们都会使用if...esle这类语句进行设计,但是这种设计一旦后期的需求发生了改变,那么维护起来相当的复杂!为了解决这个问题,我们可以使用状态设计模式。

2.状态设计模式的实现思路

1)创建对应工程

2)创建状态接口

package status;
/**
 * 状态接口
 * @author jwang
 *
 */
public interface Status {
	
	public void handle();//状态的处理方法
}

3)创建对应的三个状态实现类

拟办:

package status;

public class NBStatus implements Status {

	@Override
	public void handle() {
		System.out.println("进行拟办的相关操作!");
	}

}

流转:

package status;

public class LZStatus implements Status {

	@Override
	public void handle() {
		System.out.println("进行流转的相关操作!");
	}

}

办结:

package status;

public class BJStatus implements Status {

	@Override
	public void handle() {
		System.out.println("进行办结的相关操作!");
	}

}

4)创建状态管理类

package status;
/**
 * 状态管理类
 * @author jwang
 *
 */
public class StatusContext {
	private Status status;//公文当前状态
	//修改状态方法
	public void setStatus(Status status){
		System.out.println("切换状态...");
		this.status = status;
		this.status.handle();//调用切换后的状态的处理方法
	}
}

5)编写测试代码进行测试

package status;

public class Test {

	public static void main(String[] args) {
		StatusContext sc = new StatusContext();
		sc.setStatus(new NBStatus());//拟办状态
		
		sc.setStatus(new LZStatus()); //进行流转
		
		sc.setStatus(new BJStatus()); //进行办结
		
	}

}

测试结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值