首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java之计策模式

2012-10-21 
Java之策略模式今天给大家介绍设计模式:策略模式一.策略模式是对象的行为模式,用意是对一组算法的封装。动

Java之策略模式

今天给大家介绍设计模式:策略模式

一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用UML示意图Java之计策模式二.组成部分: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.总结优点:动态改变算法或行为缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,必须对每一个算法了解?

热点排行