码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-04-21 20:20:53      阅读:122      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!