DANCE WITH JAVA

开发出高质量的系统

常用链接

统计

积分与排名

好友之家

最新评论

Java 中的模式 --- 简单的状态模式

状态模式很简单,无论是理解,还是实现,都很简单。
一、定义:
1,状态模式允许一个"对象"在其内部状态改变的时候改变其行为。
2,状态模式的角色:
抽象状态,具体状态,环境(context)角色
状态模式的角色比较简单,不用解释了,看名字就能了解。
二、状态模式的实现
1,简单实例
 1public class Context{
 2    private State state;
 3    public void sampleOperation(){
 4        state.sampleOperation();
 5    }

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

 9}

10public interface State{
11    void sampleOperation();
12}

13public class ConcreteState implements State {
14    public void sampleOperation();
15}
2、状态模式的经典实现
Tcp就是状态模式的一个经典实现:TcpConnect 他有三个状态,TcpEstablished  TcpListen  TcpClosed
TcpConnect的功能会跟着状态的改变而改变。或是Established,或是Listen,或是Closed
三、状态模式的与策略模式,看到上边的部分,很容易让人想到策略模式,这两个模式有什么区别呢?如何使用
策略模式:
1,当一个环境角色选择了一个具体的策略,那么在整个环境类的生命周期都不会改变
2,策略模式的环境自己选择一个具体的策略
3,策略模式并不明确告诉客户端它所选择的具体策略是什么,对客户是黑箱。
状态模式:
1,在整个环境类的生命周期中会有明显的状态改变。
2,状态模式是被外在原因放入一个策略
3,状态模式明显的告诉客户端当前的状态,对客户是白箱。

posted on 2006-12-03 11:51 dreamstone 阅读(3476) 评论(1)  编辑  收藏 所属分类: 设计模式

评论

# re: Java 中的模式 --- 简单的状态模式 2006-12-06 09:14 sgecko

解释的不错,不过从分类上讲,我觉得状态模式应该是策略模式的一个变态。  回复  更多评论   


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


网站导航: