网上有很多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
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)
相关视频
相关阅读 jdk不是有效的win32程序怎么办 jdk不是有效的win32程序解决方法java设置cookie教程 java怎么设置cookiejava怎么设置随机数 java设置随机数详细教程java怎么设置光标位置 java设置光标位置教程如何在Mac上清除Java高速缓存?如何在Mac上卸载Java?Mac上怎么卸载Java?OSX 10.11 java 6不兼容问题解决办法如何为Mac更新Java?java mac版更新教程
热门文章 没有查询到任何记录。
最新文章
编程语言排行榜2020年android studio怎么删
eclipse怎么设置编码格式 eclipse设置编码格andriod studio如何使用真机测试 andriod sandroid studio怎么生成apk android studioandroid studio如何导入jar包 android stud
人气排行 安卓模拟器BlueStacks安装使用教程编程语言排行榜2020年9月 TIOBE编程语言排行eclipse字体大小怎么设置 eclipse字体大小plsql developer怎么连接数据库 plsql deveTomcat9.0安装教程 Tomcat9.0环境变量配置方plsql developer怎么使用 plsql developerVisual Studio 2015环境搭建教程Eclipse优化设置教程 Eclipse优化设置技巧
支持( 0 ) 盖楼(回复)
查看所有1条评论>>