应用场景: 在软件的构建过程中,对象的状态改变之后,对象的行为也会随之改变,如何在运行时根据对象的状态透明的更改对象的行为就是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(); } }