// patterns/state/StateMachineDemo.java// (c)2017 MindView LLC: see Copyright.txt// We make no guarantees that this code is fit for any purpose.// Visit http://OnJava8.com for more book information.// The StateMachine pattern and Template method// {java patterns.state.StateMachineDemo}package patterns.state;import onjava.Nap;interface State {void run();}abstract class StateMachine {protected State currentState;protected abstract boolean changeState();// Template method:protected final void runAll() {while(changeState()) // CustomizablecurrentState.run();}}// A different subclass for each state:class Wash implements State {@Overridepublic void run() {System.out.println("Washing");new Nap(0.5);}}class Spin implements State {@Overridepublic void run() {System.out.println("Spinning");new Nap(0.5);}}class Rinse implements State {@Overridepublic void run() {System.out.println("Rinsing");new Nap(0.5);}}class Washer extends StateMachine {private int i = 0;// The state table:private State[] states = {new Wash(), new Spin(),new Rinse(), new Spin(),};Washer() { runAll(); }@Overridepublic boolean changeState() {if(i < states.length) {// Change the state by setting the// surrogate reference to a new object:currentState = states[i++];return true;} elsereturn false;}}public class StateMachineDemo {public static void main(String[] args) {new Washer();}}/* Output:WashingSpinningRinsingSpinning*/
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。