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

更新时间:2019-12-31 来源:编程 点击:

【www.hzclsc.cn--编程】

网上有很多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)

本文来源:http://www.hzclsc.cn/ruanjianzixun/44585.html

为您推荐

制作电音的软件|电音创作软件KORG将于明年登录Switch

如果你经常关注我们对任天堂Switch的报道,你可能还记得有家公司正在为Switch制作学习编程的软件,接下来要告诉各位,Switch不单可以用来编程,而且还可以作曲!日本知名的电子音乐作曲工作站软件游戏资讯

2020-12-05 17:04:48   做电音的软件   电音软件手机版  

【支付宝小程序在哪里找】支付宝小程序开发者公测地址 支付宝小程序申请公测网址

支付宝小程序目前已经开始公测了,为大家带来支付宝小程序开发者公测地址,支付宝小程序是手机应用嵌入支付宝客户端的一种方法,下面是支付宝小程序申请公测网址! 支付宝小程序开发者公测地址 特色能力开发服务成编程开发

2020-11-22 11:04:37   支付宝小程序怎么建立   支付宝小程序怎么开发  

[c罗]c++ vector用法详解 c++ vector用法总结

c++ vector是在c++中开发过程中c++ vector作为一个十分有用的容器,许多朋友还不是很清楚c++ vector用法,不知道c++ vector到底有什么优秀的用法,不用着急一起来看看编程开发

2020-11-22 11:04:37   pcba   c盘满了怎么清理  

【eclipse如何导出项目】eclipse怎么导出项目 eclipse导出项目教程

eclipse作为用户量十分大的编程开发软件,有许多新手用户朋友或者刚开始接触这款软件的朋友经常会出现在使用eclipse的时候不知道该怎么导出已经读取到软件中的项目,其实很简单,一起来看看ecli教你一招

2020-11-10 07:04:06   eclipse怎么导入项目   eclipse怎么打开项目  

jdk环境变量配置win10|JDK环境变量配置WIN7 WIN7JDK环境变量配置教程

JDK怎么进行环境变量配置一直是困扰着许多入门编程员的问题,许多用户朋友们如果重新换了一台设备,很容易出现不知道怎么进行环境配置的情况,不用担心,小编为大家带来了详细的在WIN7系统下如果进行JDK教你一招

2020-11-07 11:05:38   jdk安装与环境变量配置   安装jdk并配置环境变量