您的位置:首页 > 其它

设计模式阅读备忘笔记-策略模式

2017-09-21 10:55 274 查看

设计模式阅读备忘笔记-策略模式

1、策略模式(Strategy)

策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响使用算法的客户。



结构如下

abstract class Strategy
{
// 算法抽象
public abstract void AlgorithmInterface();
}

class ConcretesStrategyA : Strategy
{
public override void AlgorithmInterface()
{
//实现算法A
}
}
class ConcretesStrategyB : Strategy
{
public override void AlgorithmInterface()
{
//实现算法B
}
}


还需要一个对外接口

//对外接口,不变
class Context
{
Strategy strategy;
//用一个具体算法对象来配置Strategy
public Context(Strategy strategy)
{
this.strategy = strategy;
}

//对外具体算法接口
public void ContextInterface()
{
strategy.AlgorithmInterface();
}
}


如何调用

//外部调用例子
class SomeWhere {
public void DoSomeThing()
{
Context context;
//调用算法A
context = new Context(new ConcretesStrategyA());
context.ContextInterface();
//调用算法B
context = new Context(new ConcretesStrategyB());
context.ContextInterface();
}
}


总结:降低了耦合度,外部调用只需要通过Context接口,且接口和调用方始终保持不变,当算法改变时,Context和调用方都不需要发生变化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式