当前位置:   article > 正文

大话设计模式之状态模式_某系统要求两个开关对象的状态保持一致,要么都处于开的状态,要么都属于关的状态。

某系统要求两个开关对象的状态保持一致,要么都处于开的状态,要么都属于关的状态。

状态模式

    当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类

 

  1. abstractclass State
  2. {
  3. public abstract void Handler(Context context);
  4. };
  5. class ConcretStateA :State
  6. {
  7. public override void Handler(Context context)
  8. {
  9. context.State = new ConcretStateB();
  10. }
  11. };
  12. class ConcretState :State
  13. {
  14. public override void Handler(Context context)
  15. {
  16. context.State = new ConcretStateA();
  17. }
  18. };
  19. class Context
  20. {
  21. private State state;
  22. public Context(State state) //初识状态
  23. {
  24. this.state = state;
  25. }
  26. public State State //用于读取当前状态和新状态
  27. {
  28. get{ return state; }
  29. set{
  30. state = value;
  31. Console.WriteLine("当前状态"+state.GetType().Name);
  32. }
  33. }
  34. public void Request()
  35. {
  36. state.Handler(this); //对请求做处理并设置下一个状态
  37. }
  38. };
  39. void main()
  40. {
  41. Context c = new Context(new ConcretStateA());
  42. c.Request(); //不断的请求同时更改状态
  43. c.Request();
  44. c.Request();
  45. c.Request();
  46. }


 

状态模式主要解决的是当前控制一个对象状态转换

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/421447
推荐阅读
相关标签
  

闽ICP备14008679号