zoukankan      html  css  js  c++  java
  • 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) {
    		/*
    		 * 本例的 状态值仅仅有两个,由状态类自身控制
    		 * 也能够把状态值的控制,交由client来设置
    		 */
    		WindowContext context = new WindowContext(new WindowState("窗体"));
    		context.switchState();
    		context.switchState();
    		context.switchState();
    		context.switchState();
    
    	}
    }

    打印

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




  • 相关阅读:
    请求返回结果模板
    Oracle的sql语句中case关键字的用法 & 单双引号的使用
    java如何从方法返回多个值
    junit的简单用法
    java命令启动jar包
    Fastjson-fastjson中$ref对象重复引用问题
    指定cmd窗口或tomcat运行窗口的名称
    Spring boot配置log4j输出日志
    The import XXX cannot be resolved
    斐波那契数列
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6973375.html
Copyright © 2011-2022 走看看