Policy mode and simple factory
Policy algorithm class:
Using System; using System. collections. generic; using System. linq; using System. text; namespace StrategyDemo {abstract class Strategy {public abstract void BillInterface ();} class ConcreteStrategyA: Strategy {public override void BillInterface () {Console. writeLine ("Implementation of algorithm A") ;}} class ConcreteStrategyB: Strategy {public override void BillInterface () {Console. writeLine ("Implementation of algorithm B");} class ConcreteStrategyC: Strategy {public override void BillInterface () {Console. writeLine ("Implementation of algorithm C ");}}}
Simple factory for context Encapsulation
Using System; using System. collections. generic; using System. linq; using System. text; namespace StrategyDemo {class Context {Strategy strategy; public const int TYPEA = 1; public const int TYPEB = 2; public const int TYPEC = 3; public Context (int I) {switch (I) {case TYPEA: strategy = new ConcreteStrategyA (); break; case TYPEB: strategy = new ConcreteStrategyB (); break; case TYPEC: strategy = new ConcreteStrategyC (); break; default: break; }}// context interface public void ContextInterface () {strategy. billInterface ();}}}
Client call:
Using System; using System. collections. generic; using System. linq; using System. text; namespace StrategyDemo {// class Program {static void Main (string [] args) {Context context; context = new Context (Context. TYPEA); context. contextInterface (); context = new Context (Context. TYPEB); context. contextInterface (); context = new Context (Context. TYPEC); context. contextInterface (); Console. readKey ();}}}