您的位置:首页 > 其它

设计模式学习21 State

2010-07-24 20:13 211 查看

应用场景:

在软件的构建过程中,对象的状态改变之后,对象的行为也会随之改变,如何在运行时根据对象的状态透明的更改对象的行为就是state模式解决的问题。

实现代码:

// 抽象类,表达状态的依赖状态行为
abstract class StateDocument
{
public abstract void Handler1();
public abstract void Handler2();
public abstract void Handler3();

public abstract StateDocument Next
{
get;
set;
}
}

class ReadOnlyState : StateDocument
{

public override void Handler1()
{

}

public override void Handler2()
{

}

public override void Handler3()
{

}
}

// 这里可以使用工厂模式实现
class EditableState : StateDocument
{

public override void Handler1()
{

}

public override void Handler2()
{

}

public override void Handler3()
{

}
}

// 主逻辑
class Document
{
StateDocument stateDocument;

public void SetStateDocument(StateDocument state)
{
this.stateDocument = state;
}

public void Handler1()
{
stateDocument.Handler1();

// 由状态自己来管理自己的下一个状态,从而使得主逻辑更清晰。.
// 实现状态流转。
this.stateDocument = this.stateDocument.Next;
}

public void Handler2()
{
stateDocument.Handler2();
}

public void Handler2()
{
stateDocument.Handler2();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: