随笔 - 117  文章 - 72  trackbacks - 0

声明:原创作品(标有[原]字样)转载时请注明出处,谢谢。

常用链接

常用设置
常用软件
常用命令
 

订阅

订阅

留言簿(7)

随笔分类(130)

随笔档案(123)

搜索

  •  

积分与排名

  • 积分 - 154450
  • 排名 - 389

最新评论

[关键字]:java,design pattern,设计模式,《Java与模式》,state pattern,状态模式
[环境]:StarUML5.0 + JDK6
[作者]:Winty (wintys@gmail.com)
[正文]:
  人的状态变化:

  状态模式类图:

/**
 * 状态模式:state pattern
 *
 * 不使用状态模式时,代码可能会是这样:
 * if (state.equals("awake")){
 *        System.out.println("awake:工作.");
 * }
 * else if(state.equals("asleep")){
 *        System.out.println("asleep:做梦.");
 * }
 * else ...
 *
 * @version 2009-5-18
 * @author Winty(wintys@gmail.com)
 */
public class StateTest{
    public static void main(String[] args){
        Person person = new Person();

        person.doAction();

        person.setState(new Asleep());
        person.doAction();
    }
}

/**
 *环境:Context
 */
class Person{
    private State state = new Awake();

    public void setState(State state){
        this.state = state;
    }

    public void doAction(){
        state.doAction();
    }
}

/**
 *抽象状态:State
 */
interface State{
    public void doAction();
}

/**
 *具体状态
 */
class Awake implements State{
    public void doAction(){
        System.out.println("awake:工作.");
    }
}

/**
 *具体状态
 */
class Asleep implements State{
    public void doAction(){
        System.out.println("asleep:做梦.");
    }
}
posted on 2009-05-18 23:03 天堂露珠 阅读(1190) 评论(1)  编辑  收藏 所属分类: Pattern

FeedBack:
# re: [原]状态模式 2009-05-19 12:08 xx
状态模式 充分体现了开闭原则

如果有新的状态加入 不需要修改Person类



congdepeng@hotmail.com  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: