1.定义#
策略模式定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户。策略模式通过继承一个抽象的算法类形成了一个算法家族,通过使用简单工厂模式对算法选择过程封装。
2.类图#
类图3.实现#
3.1抽象策略类##
public abstract class Strategy{
public abstract void Algorithm();
}
3.2具体策略类##
仅列出一个模板,其它类似.
public class ConcreteStrategyA extends Strategy{
public void Algorithm(){
//具体的算法过程
}
}
3.3简单工厂生成策略类##
public class StrategyFactory{
Strategy strategy;
public StrategyFactory(char c){
//使用简单工厂模式生成响应的策略
switch(c)
{
case 'A':
strategy = new ConcreteStrategyA();
case 'B':
strategy = new ConcreteStrategyB();
default:
System.out.println("Error Strategy!");
}
}
public void operation(){
this.strategy.Algorithm();
}
}
4.使用场景#
1.很多相关的类只是在行为上有差异。
2.当需要使用一个算法的不同变体时。
3.使用算法的客户不应该知道算法的具体结构时。
4.当一个类定义了多种行为并且这些行为在这个类的操作中以多个条件语句的形式出现时。
网友评论