您的位置:首页 > 编程语言 > C#

Agile Principles,Patterns,And Practices in C# 之Strategy Pattern

2008-08-12 16:24 375 查看
from:吕震宇

Code

// Strategy pattern -- Structural example

using System;

// "Strategy"

abstract class Strategy

{

// Methods

abstract public void AlgorithmInterface();

}

// "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

{

// Fields

Strategy strategy;

// Constructors

public Context( Strategy strategy )

{

this.strategy = strategy;

}

// Methods

public void ContextInterface()

{

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 = new Context( new ConcreteStrategyB() );

d.ContextInterface();

Context e = new Context( new ConcreteStrategyC() );

e.ContextInterface();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: