• 技术文章 >Java >java教程

    Java实现状态(State)模式的示例

    黄舟黄舟2017-03-11 11:28:18原创707
    Java实现状态(State)模式的示例

    /**
     * @author stone
     */
    public class WindowState {
    	private String stateValue;
    	
    	public WindowState(String stateValue) {
    		this.stateValue = stateValue;
    	}
    	
    	public String getStateValue() {
    		return stateValue;
    	}
    
    	public void setStateValue(String stateValue) {
    		this.stateValue = stateValue;
    	}
    	
    	public void handle() {
    		/*
    		 * 根据不同状态做不同操作, 再切换状态
    		 */
    		if ("窗口".equals(stateValue)) {
    			switchWindow();
    			this.stateValue = "全屏";
    		} else if ("全屏".equals(stateValue)) {
    			switchFullscreen();
    			this.stateValue = "窗口";
    		}
    	}
    	
    	private void switchWindow() {
    		System.out.println("切换为窗口状态");
    	}
    	
    	private void switchFullscreen() {
    		System.out.println("切换为全屏状态");
    	}
    	
    }
    /**
     * 状态的使用
     * @author stone
     *
     */
    public class WindowContext {
    	private WindowState state;
    	
    	public WindowContext(WindowState state) {
    		this.state  = state;
    	}
    	
    	public WindowState getState() {
    		return state;
    	}
    	
    	public void setState(WindowState state) {
    		this.state = state;
    	}
    	
    	public void switchState() {
    		this.state.handle();
    	}
    }
    /*
     * 状态(State)模式 行为型模式
     * 既改变对象的状态,又改变对象的行为
     * 根据状态,改变行为
     */
    public class Test {
    	public static void main(String[] args) {
    		/*
    		 * 本例的 状态值只有两个,由状态类自身控制
    		 * 也可以把状态值的控制,交由客户端来设置
    		 */
    		WindowContext context = new WindowContext(new WindowState("窗口"));
    		context.switchState();
    		context.switchState();
    		context.switchState();
    		context.switchState();
    
    	}
    }

    打印

    切换为窗口状态
    切换为全屏状态
    切换为窗口状态
    切换为全屏状态

    以上就是Java实现状态(State)模式的示例的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    上一篇:Java备忘录(Memento)模式实现的示例代码 下一篇:Java实现访问者(Visitor)模式代码详解
    大前端线上培训班

    相关文章推荐

    • 理解java8中java.util.function.*pojo反射新方法(附代码)• 浅析安卓app和微信授权登录及分享完整对接(代码分享)• 教你一招搞定时序数据库在Spring Boot中的使用• 一招教你使用java快速创建Map(代码分享)• PlayFramework 完整实现一个APP(十一)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网