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();
    
    	}
    }

    打印

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




  • 相关阅读:
    C语言I博客作业02
    C语言I博客作业06
    C语言I—2019秋作业第一周作业
    C语言I博客作业09
    C语言I博客作业07
    C语言I博客作业08
    利用 jrebel 热部署\远程调试\远程热部署 springboot项目 服务器上的代码
    java 双因素认证(2FA)TOTP demo
    java File读取文件始终不存在的问题分析
    exchange 2010 的两个错误
  • 原文地址:https://www.cnblogs.com/yfceshi/p/6973375.html
Copyright © 2011-2022 走看看