Java设计模式(13)行为型:策略模式
2016-12-27 15:47
351 查看
(一)模块概述
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的重心不是如何实现算法,而是如何组织、调用这些算法,从而让程序结构更灵活,具有更好的维护性和扩展性。策略模式一个很大的特点就是各个策略算法的平等性。对于一系列具体的策略算法,大家的地位是完全一样的,正因为这个平等性,才能实现算法之间可以相互替换。所有的策略算法在实现上也是相互独立的,相互之间是没有依赖的。所以可以这样描述这一系列策略算法:策略算法是相同行为的不同实现。运行期间,策略模式在每一个时刻只能使用一个具体的策略实现对象,虽然可以动态地在不同的策略实现中切换,但是同时只能使用一个。(二)模块结构
策略模式包括3种角色:1)抽象策略角色: 策略类,通常由一个接口或者抽象类实现。
2)具体策略角色:包装了相关的算法和行为。
3)环境角色:持有一个策略类的引用,最终给客户端调用,这个角色也有可能是客户端本身。
(三)Demo
下面以加减乘除运算为不同策略的例子进行说明:抽象策略角色:
public interface ICalculator { public int calculate(int a, int b); }加法具体策略角色:
public class StrategyPlus implements ICalculator { @Override public int calculate(int a, int b) { return a + b; } }减法具体策略角色:
public class StrategyMinus implements ICalculator { @Override public int calculate(int a, int b) { return a - b; } }乘法具体策略角色:
public class StrategyMultiply implements ICalculator { @Override public int calculate(int a, int b) { return a * b; } }执行过程:
int a = 1; int b = 1; ICalculator ic = new StrategyPlus(); // 客户端选择需要的策略 int result = ic.calculate(a, b); // 统一的实现接口 System.out.println("运算的结果是:"+result);执行结果:
运算的结果是:2
相关文章推荐
- 设计模式实战13--行为型--策略模式
- java设计模式(行为型)之策略模式
- java设计模式--行为型模式--策略模式
- 设计模式(Design Pattern) - 行为型模式(Behavioral Pattern) - 策略模式(Strategy) - Java实现
- JAVA设计模式(13):行为型-责任链模式(Responsibility)
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- Java与设计模式(二十三)行为型--策略模式
- Java设计模式(13)之策略模式
- 设计模式学习之策略模式(Strategy,行为型模式)(13)
- 详解java设计模式(三)之策略模式(行为型)
- java设计模式13——策略模式(Strategy)
- java-设计模式(行为型)-【策略模式】
- java-行为型模式-策略设计模式
- JAVA设计模式(13) —<行为型>策略模式(strategy)
- Java设计模式_(行为型)_策略模式
- Java设计模式之行为型模式(策略模式)
- JAVA设计模式(13):行为型-责任链模式(Responsibility)
- Java设计模式之策略模式(13)
- java设计模式之行为型模式-策略模式
- Java设计模式_行为型_策略模式_工作还是休息