javascript学习指南|java state 状态设计模式

2019-12-31 编程 阅读:

网上有很多java设计模式之state状态模式的教程,今天小编为大家提供的是一位java从业者的一些经验。state借口有四个状态类,分别是create、start、end和destroy。
State接口代码
package org.javaer.code.pattern.state;

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

public interface State {
List commands = new ArrayList();
public void handle();
}

Create状态类代码
package org.javaer.code.pattern.state;

public class Create implements State {

public Create() {
commands.add(this);
}
@Override
public void handle() {
execute(this);
}

public void execute(State command){
System.out.println(“create”);
commands.get(commands.indexOf(this)+1).handle();
}
}

Start状态类代码
package org.javaer.code.pattern.state;

public class Start implements State{

public Start() {
commands.add(this);
}
@Override
public void handle() {
execute(this);
}

public void execute(State command){
System.out.println(“start”);
commands.get(commands.indexOf(this)+1).handle();
}
}

End状态类代码
package org.javaer.code.pattern.state;

public class End implements State {

public End() {
commands.add(this);
}
@Override
public void handle() {
execute(this);
}

public void execute(State command){
System.out.println(“end”);
commands.get(commands.indexOf(this)+1).handle();
}
}

Destroy状态类代码
package org.javaer.code.pattern.state;

public class Destroy implements State {

public Destroy() {
commands.add(this);
}
@Override
public void handle() {
execute(this);
}

public void execute(State command){
System.out.println(“destory”);
//我这里加了这一句,就是想让它循环的转换状态,就会导致内存溢出
commands.get(commands.indexOf(this) =commands.size()-1?0:commands.indexOf(this)+1).handle();
}
}

测试类Main代码
package org.javaer.code.pattern.state;

public class Main {
@SuppressWarnings(“unused”)
public static void main(String[] args) {
State state1 = new Create();
State state2 = new Start();
State state3 = new End();
State state4 = new Destroy();
state1.handle();
}
}

输出:
create
start
end
destory
create
start
end
destory
create
start
end
destory

Exception in thread “main” java.lang.StackOverflowError
at sun.nio.cs.UTF_8.updatePositions(Unknown Source)
at sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(Unknown Source)

javascript学习指南|java state 状态设计模式

http://m.hzclsc.cn/ruanjianzixun/44585.html

推荐访问:java学习路线

编程推荐文章

推荐内容

上一篇:【浮点数转换为整数】浮点数转整数技巧 下一篇:隐藏链接地址_隐藏链接方法