Java之策略模式
今天给大家介绍设计模式:策略模式
一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用UML示意图
二.组成部分:1.?环境角色:持有一个策略类引用2.?抽象策略 3.?具体策略:相关的算法或操作三.代码例子1.?抽象策略package com.eekq.strategy; public interface IStrategy { /**策略方法*/ public abstract double add();}?2. 具体策略,这里我以两个具体策略为例package com.eekq.strategy; public class ConcreteStrategy1 implements IStrategy { /**示意性算法*/ public double add() { // TODO 自动生成方法存根 System.out.println(this.getClass().getName() + "的加法运算"); return 0; } }package com.eekq.strategy; public class ConcreteStrategy2 implements IStrategy { public double add() { // TODO 自动生成方法存根 System.out.println(this.getClass().getName() + "的加法运算"); return 0; } }?3.环境角色package com.eekq.strategy; public class Context { /**环境角色类*/ private IStrategy strategy; public Context(IStrategy strategy) { this.strategy = strategy; } /**策略方法*/ public double add() { this.strategy.add(); return 0; }}?4.客户端调用package com.eekq.strategy; public class Main { /** *@paramargs */ public static void main(String[] args) { // TODO 自动生成方法存根 Context context = new Context(new ConcreteStrategy1()); context.add();//执行算法1 context = new Context(new ConcreteStrategy2()); context.add();//执行算法2 } }?5.执行结果:com.eekq.strategy.ConcreteStrategy1的加法运算com.eekq.strategy.ConcreteStrategy2的加法运算6.总结优点:动态改变算法或行为缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,必须对每一个算法了解?