Patterns in SOME - Strategy
2007-03-01 13:05
447 查看
[align=left]Code in C#:[/align]
[align=left] [/align]
[align=left]namespace Strategy_DesignPattern[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] abstract class Strategy [/align]
[align=left] {[/align]
[align=left] abstract public void DoAlgorithm();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class FirstStrategy : Strategy [/align]
[align=left] {[/align]
[align=left] override public void DoAlgorithm()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In first strategy"); [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class SecondStrategy : Strategy [/align]
[align=left] {[/align]
[align=left] override public void DoAlgorithm()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In second strategy"); [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class Context [/align]
[align=left] {[/align]
[align=left] Strategy s;[/align]
[align=left] public Context(Strategy strat)[/align]
[align=left] {[/align]
[align=left] s = strat; [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void DoWork()[/align]
[align=left] {[/align]
[align=left] // some of the context's own code goes here[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void DoStrategyWork()[/align]
[align=left] {[/align]
[align=left] // now we can hand off to the strategy to do some [/align]
[align=left] // more work[/align]
[align=left] s.DoAlgorithm();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Summary description for Client.[/align]
[align=left] ///</summary>[/align]
[align=left] public class Client[/align]
[align=left] {[/align]
[align=left] public static int Main(string[] args)[/align]
[align=left] { [/align]
[align=left] FirstStrategy firstStrategy = new FirstStrategy();[/align]
[align=left] Context c = new Context(firstStrategy);[/align]
[align=left] c.DoWork();[/align]
[align=left] c.DoStrategyWork();[/align]
[align=left] [/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]Code in SOME:[/align]
AStrategy
a_DoAlgorithm()
CFirstStrategy : AStrategy
o_DoAlgorithm()
CSecondStrategy : AStrategy
o_DoAlgorithm()
CContext ->AStrategy[_s]
(AStrategy)
DoWork()
DoStrategyWork()
CClient
main
CClient.main
{
CFirstStrategy firstStrategy.();
CContext c.(_s = firstStrategy); // quick asignment
c.DoWork();
c.DoStrategyWork()
{
_s.DoAlgorithm<CFirstStrategy>()
{
<% Console.WriteLine("In first strategy"); %>
};
};
}
[align=left] [/align]
[align=left]namespace Strategy_DesignPattern[/align]
[align=left]{[/align]
[align=left] using System;[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] abstract class Strategy [/align]
[align=left] {[/align]
[align=left] abstract public void DoAlgorithm();[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class FirstStrategy : Strategy [/align]
[align=left] {[/align]
[align=left] override public void DoAlgorithm()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In first strategy"); [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class SecondStrategy : Strategy [/align]
[align=left] {[/align]
[align=left] override public void DoAlgorithm()[/align]
[align=left] {[/align]
[align=left] Console.WriteLine("In second strategy"); [/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] class Context [/align]
[align=left] {[/align]
[align=left] Strategy s;[/align]
[align=left] public Context(Strategy strat)[/align]
[align=left] {[/align]
[align=left] s = strat; [/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void DoWork()[/align]
[align=left] {[/align]
[align=left] // some of the context's own code goes here[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] public void DoStrategyWork()[/align]
[align=left] {[/align]
[align=left] // now we can hand off to the strategy to do some [/align]
[align=left] // more work[/align]
[align=left] s.DoAlgorithm();[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left] [/align]
[align=left] ///<summary>[/align]
[align=left] /// Summary description for Client.[/align]
[align=left] ///</summary>[/align]
[align=left] public class Client[/align]
[align=left] {[/align]
[align=left] public static int Main(string[] args)[/align]
[align=left] { [/align]
[align=left] FirstStrategy firstStrategy = new FirstStrategy();[/align]
[align=left] Context c = new Context(firstStrategy);[/align]
[align=left] c.DoWork();[/align]
[align=left] c.DoStrategyWork();[/align]
[align=left] [/align]
[align=left] return 0;[/align]
[align=left] }[/align]
[align=left] }[/align]
[align=left]}[/align]
[align=left] [/align]
[align=left] [/align]
[align=left]Code in SOME:[/align]
AStrategy
a_DoAlgorithm()
CFirstStrategy : AStrategy
o_DoAlgorithm()
CSecondStrategy : AStrategy
o_DoAlgorithm()
CContext ->AStrategy[_s]
(AStrategy)
DoWork()
DoStrategyWork()
CClient
main
CClient.main
{
CFirstStrategy firstStrategy.();
CContext c.(_s = firstStrategy); // quick asignment
c.DoWork();
c.DoStrategyWork()
{
_s.DoAlgorithm<CFirstStrategy>()
{
<% Console.WriteLine("In first strategy"); %>
};
};
}
相关文章推荐
- Patterns in SOME –Observer
- Patterns in SOME –Proxy
- Patterns in SOME –Prototype
- Patterns in SOME –Memento
- Patterns in SOME –Flyweight
- Patterns in SOME –Builder
- Patterns in SOME –Mediator
- Patterns in SOME –Facade
- Patterns in SOME –Abstract Factory
- Patterns in SOME –Iterator
- Patterns in SOME –Decorator
- Patterns in SOME –Factory Method
- Patterns in SOME – Command
- Patterns in SOME –Composite
- Patterns in SOME –Chain Of Responsibility
- Patterns in SOME –Bridge
- Patterns in SOME - Visitor
- Patterns in SOME –Template Method
- Patterns in SOME –Adapter (class)
- use AWK to extract some lines according to some patterns in file