您的位置:首页 > 其它

【设计模式】策略模式与状态模式。

2017-10-24 15:38 369 查看
  策略模式与状态模式在实现上有共同之处,都是把不同的情形抽象为统一的接口来实现,就放在一起进行记录。2个模式的UML建模图基本相似,区别在于状态模式需要在子类实现与context相关的一个状态行为。

  状态模式的的思想是,状态之间的切换,在状态A执行完毕后自己控制状态指向状态B。状态模式是不停的切换状态执行。

  策略模式的思想上是,考虑多种不同的业务规则将不同的算法封装起来,便于调用者选择调用。策略模式只是条件选择执行一次。

1   public  interface IState
2     {
3        void Submit(FileSub file);
4     }
5
6  public class BeginState :IState
7     {
8
9         public void Submit(FileSub file)
10         {
11             Console.WriteLine("begin-------");
12             file.SetState(new WorkingState());
13         }
14     }
15
16  public  class WorkingState:IState
17     {
18         public void Submit(FileSub file)
19         {
20             Console.WriteLine("working-------------");
21             file.SetState(new EndState());
22             //throw new NotImplementedException();
23         }
24     }
25
26
27  public class EndState:IState
28     {
29         public void Submit(FileSub file)
30         {
31             Console.WriteLine("end------------");
32             file.SetState(new BeginState());
33             //throw new NotImplementedException();
34         }
35     }
36
37  public class FileSub
38     {
39         private IState istate;
40         public FileSub()
41         {
42             istate = new BeginState();
43         }
44         public void SetState(IState state)
45         {
46             istate = state;
47         }
48         public void Submit()
49         {
50             istate.Submit(this);
51         }
52     }
53
54     public class Main
55     {
56         public Main()
57         {
58             FileSub file = new FileSub();
59             file.SetState(new BeginState());
60             file.Submit();
61             file.Submit();
62             file.Submit();
63             Console.ReadKey();
64         }
65     }


状态模式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐