【设计模式】策略模式与状态模式。
2017-10-24 15:38
369 查看
策略模式与状态模式在实现上有共同之处,都是把不同的情形抽象为统一的接口来实现,就放在一起进行记录。2个模式的UML建模图基本相似,区别在于状态模式需要在子类实现与context相关的一个状态行为。
状态模式的的思想是,状态之间的切换,在状态A执行完毕后自己控制状态指向状态B。状态模式是不停的切换状态执行。
策略模式的思想上是,考虑多种不同的业务规则将不同的算法封装起来,便于调用者选择调用。策略模式只是条件选择执行一次。
状态模式
状态模式的的思想是,状态之间的切换,在状态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 }
状态模式
相关文章推荐
- 快速掌握23种设计模式(状态,策略,观察者)
- java设计模式之责任链模式、状态模式、策略模式
- 设计模式之禅之行为类PK【策略模式VS状态模式】
- 设计模式之策略模式与状态模式的区别
- 设计模式:状态模式和策略模式的比较blogdown的专栏
- 23种设计模式4--行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式)
- [★] .NET 偶尔连接的设计策略 -联机状态- 脱机模式- 数据同步
- (一)委托模式简介 委托模式是基本的设计模式之一。委托,即是让另一个对象帮你做事情。 许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。 委托模式使得我们可以用聚合
- "围观"设计模式(31)--行为型设计模式总结(模板、观察者、策略、状态、责任链、命令、访问者、中介者、备忘录、解释器)
- 设计模式之行为型模式(责任链、命令、解释器、迭代式、仲裁者、备忘录、观察者、状态、策略、模板方法、访问者)
- java设计模式(二)—— 装饰、门面、享元、原型、状态、策略
- Java设计模式之策略模式与状态模式
- 设计模式 状态模式 策略模式 观察者模式 命令模式 中介者模式
- 【设计模式】 模式PK:策略模式VS状态模式
- 设计模式之状态模式和策略模式
- 对比Java设计模式编程中的状态模式和策略模式
- .NET中的设计模式---策略模式&状态模式
- 23种设计模式4--行为型模式(策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式)
- 设计模式--状态与策略模式
- 设计模式:状态模式和策略模式的比较