在软件的构建过程中,对象的状态改变之后,对象的行为也会随之改变,如何在运行时根据对象的状态透明的更改对象的行为就是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(); } }
作者:许强1. 本博客中的文章均是个人在学习和项目开发中总结。其中难免存在不足之处 ,欢迎留言指正。 2. 本文版权归作者和博客园共有,转载时,请保留本文链接。
1. 本博客中的文章均是个人在学习和项目开发中总结。其中难免存在不足之处 ,欢迎留言指正。 2. 本文版权归作者和博客园共有,转载时,请保留本文链接。