首页 > 其他 > 详细

设计模式学习(十七) 状态模式

时间:2015-04-21 20:18:28      阅读:207      评论:0      收藏:0      [点我收藏+]

场景:

  -- 酒店系统中,房间的状态变化:   空闲 -- >已预定 -- > 已入住

核心:

  -- 用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题

结构:

  -- Context环境类

    环境类中维护一个State对象,他是定义了当前的状态

  -- State抽象状态类

  -- 每一个类封装了一个状态对应的行为

 

代码实现:

技术分享
package state;

public class HomeContext {
    
    private State state;
    
    public void setState(State s){
        System.out.println("修改状态:");    
        state  = s;
        state.handle();
    }
}
环境状态类

 

技术分享
package state;

public interface State {
    
    public void handle();
}
State

 

技术分享
package state;

public class FreeState implements State {

    @Override
    public void handle() {
        System.out.println("...房间为空闲状态....");
        
    }


}
空闲状态

 

技术分享
package state;

public class BookedState implements State {

    @Override
    public void handle() {
        System.out.println("房间已预定状态");
        
    }


}
预定状态

 

技术分享
package state;

public class CheckedState implements State {

    @Override
    public void handle() {
        System.out.println("房间已入住状态,请勿打扰");
        
    }


}
入住状态

 

技术分享
package state;

public class Client {
    public static void main(String[] args){
        HomeContext hct = new HomeContext();
        State sf = new FreeState();
        hct.setState(sf);
        State sc = new CheckedState();
        hct.setState(sc);
    }
}
客户端

 

技术分享

  

设计模式学习(十七) 状态模式

原文:http://www.cnblogs.com/lipeng0824/p/4445018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!