设计模式学习笔记2-----策略模式
2014-05-21 15:41
429 查看
策略模式:它定义了算法家族,分别封装起来,让她们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。
以c#代码为例:
//strategy类
//抽象算法类
abstract class Strategy
{
public avstract void AlgorithmInterface();
}
//ConcreteStragegy,封装了具体的算法或行为,继承于Strategy;
class ConcreteStrategyA:Strategy
{
//算法A实现方法
public override void AlgorithmInterface();
{
Console.WriteLine("算法A实现")
}
class ConcreteStrategyB:Strategy
{
//算法B实现方法
public override void AlgorithmInterface();
{
Console.WriteLine("算法B实现")
}
class ConcreteStrategyC:Strategy
{
//算法C实现方法
public override void AlgorithmInterface();
{
Console.WriteLine("算法C实现")
}
}
//Context ,用一个ConcreteStategy来配置,维护一个队Strategy对象的引用
class Contxt
{
Strategy strategy;
public Context(Strategy strategy)
{
this.strategy = strategy;
}
public void ContextInterface()
{
strategy.AlgoritehmInterface();
}
}
//客户端代码
static void Main(string[] args)
{
Context context;
//由于实例化不同的策略,所以最终在调用context.ContextInterface()时所得到的结果就不尽相同
context = new Context(new ConcreteStratehyB())
context.ContextInterface();
context = new Context(new ConcreteStratehyC())
context.ContextInterface();
context = new Context(new ConcreteStratehyA())
context.ContextInterface();
Console.Read();
}
以c#代码为例:
//strategy类
//抽象算法类
abstract class Strategy
{
public avstract void AlgorithmInterface();
}
//ConcreteStragegy,封装了具体的算法或行为,继承于Strategy;
class ConcreteStrategyA:Strategy
{
//算法A实现方法
public override void AlgorithmInterface();
{
Console.WriteLine("算法A实现")
}
class ConcreteStrategyB:Strategy
{
//算法B实现方法
public override void AlgorithmInterface();
{
Console.WriteLine("算法B实现")
}
class ConcreteStrategyC:Strategy
{
//算法C实现方法
public override void AlgorithmInterface();
{
Console.WriteLine("算法C实现")
}
}
//Context ,用一个ConcreteStategy来配置,维护一个队Strategy对象的引用
class Contxt
{
Strategy strategy;
public Context(Strategy strategy)
{
this.strategy = strategy;
}
public void ContextInterface()
{
strategy.AlgoritehmInterface();
}
}
//客户端代码
static void Main(string[] args)
{
Context context;
//由于实例化不同的策略,所以最终在调用context.ContextInterface()时所得到的结果就不尽相同
context = new Context(new ConcreteStratehyB())
context.ContextInterface();
context = new Context(new ConcreteStratehyC())
context.ContextInterface();
context = new Context(new ConcreteStratehyA())
context.ContextInterface();
Console.Read();
}
相关文章推荐
- java 设计模式 学习笔记(4) 策略模式
- HeadFirst 设计模式学习笔记1--策略模式
- 设计模式学习笔记(六)之策略模式(Strategy)
- 设计模式学习笔记二:Strategy,策略模式
- 设计模式学习笔记之策略模式
- 设计模式学习笔记--Strategy 策略模式
- 设计模式学习笔记(5) - 策略模式
- 《Head First 设计模式》学习笔记:策略模式与观察者模式
- Head First_设计模式_学习笔记_第01章_策略模式
- 设计模式学习笔记(六)之策略模式(Strategy)
- 设计模式学习笔记二【策略模式】
- HeadFirst 设计模式学习笔记1--策略模式
- 二 策略模式——设计模式学习笔记
- java 设计模式学习笔记十五 strategy 策略设计模式
- 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
- 设计模式学习笔记(二):策略模式
- 学习笔记 ---- 设计模式之策略模式
- 步步为营 .NET 设计模式学习笔记 三、Strategy(策略模式)
- 设计模式学习笔记一 简单工厂策略模式实现销售策略的变更(一)
- 设计模式学习笔记-策略模式