From: Lu Zhenyu
Code
// Strategy pattern -- Structural example
Using System;
//"Strategy"
Abstract ClassStrategy
{
//Methods
Abstract Public VoidAlgorithminterface ();
}
// "Concretestrategya"
Class Concretestrategya: Strategy
{
// Methods
Override Public Void Algorithminterface ()
{
Console. writeline ( " Called concretestrategya. algorithminterface () " );
}
}
// "Concretestrategyb"
Class Concretestrategyb: Strategy
{
// Methods
Override Public Void Algorithminterface ()
{
Console. writeline ( " Called concretestrategyb. algorithminterface () " );
}
}
// "Concretestrategyc"
Class Concretestrategyc: Strategy
{
// Methods
Override Public Void Algorithminterface ()
{
Console. writeline ( " Called concretestrategyc. algorithminterface () " );
}
}
// " context "
class context
{< br> // fields
strategy Strategy;
// constructors
Public context (strategy Strategy)
{< br> This . strategy = strategy;
}
//Methods
Public VoidContextinterface ()
{
Strategy. algorithminterface ();
}
}
/**/ /// <Summary>
/// Client Test
/// </Summary>
Public Class Client
{
Public Static Void Main ( String [] ARGs)
{
// Three contexts following different strategies
Context C = New Context ( New Concretestrategya ());
C. contextinterface ();
Context d= NewContext (NewConcretestrategyb ());
D. contextinterface ();
Context E= NewContext (NewConcretestrategyc ());
E. contextinterface ();
}
}