您的位置:首页 > 其它

设计模式之:状态(State)模式

2016-01-27 13:48 507 查看
[java] view
plain copy

 print?

/** 

 * @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("切换为全屏状态");  

    }  

      

}  

[java] view
plain copy

 print?

/** 

 * 状态的使用 

 * @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();  

    }  

}  

[java] view
plain copy

 print?

/* 

 * 状态(State)模式 行为型模式 

 * 既改变对象的状态,又改变对象的行为 

 * 根据状态,改变行为 

 */  

public class Test {  

    public static void main(String[] args) {  

        /* 

         * 本例的 状态值只有两个,由状态类自身控制 

         * 也可以把状态值的控制,交由客户端来设置 

         */  

        WindowContext context = new WindowContext(new WindowState("窗口"));  

        context.switchState();  

        context.switchState();  

        context.switchState();  

        context.switchState();  

  

    }  

}  

打印

[plain] view
plain copy

 print?

切换为窗口状态  

切换为全屏状态  

切换为窗口状态  

切换为全屏状态  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: