状态模式应用1(去掉过多的if...else)

状态接口类

package com.fczfr.pattern.behavior.state.sample1;

public interface State {
// 状态0
public final static int STATUS_0 = 0;
// 状态1
public final static int STATUS_1 = 1;

public void sampleOperation();

public int getStatus();
}


状态0实现类

package com.fczfr.pattern.behavior.state.sample1;

public class State0 implements State {

public void sampleOperation() {
System.out.println("当前状态为状态0");
}

public int getStatus() {
return this.STATUS_0;
}


}

状态1实现类

package com.fczfr.pattern.behavior.state.sample1;

public class State1 implements State {

public void sampleOperation() {
System.out.println("当前状态为状态1");
}

public int getStatus() {
return this.STATUS_1;
}
}


状态工厂类:

package com.fczfr.pattern.behavior.state.sample1;

import java.util.ArrayList;
import java.util.List;

public class StateFactory {
List<State> stateList = null;
public StateFactory(){
stateList = new ArrayList<State>();
stateList.add(new State0());
stateList.add(new State1());
}

public State getState(int status){
for(State state:stateList){
if(state.getStatus()==status){
return state;
}
}
return null;
}
}

最后,编写客户端测试类

package com.fczfr.pattern.behavior.state.sample1;

public class Client {

public static void main(String[] args) {
StateFactory factory = new StateFactory();
factory.getState(State.STATUS_1).sampleOperation();
}

}

运行结果:

当前状态为状态1


该模式,只要传递一个静态的状态,就可以执行该需要状态的执行类。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值