您的位置:首页 > 其它

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"); %>
};
};
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: