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

第三个设计形式:策略模式

2012-11-06 
第三个设计模式:策略模式? 今天给大家介绍第三个设计模式:策略模式一.策略模式是对象的行为模式,用意是对

第三个设计模式:策略模式

? 今天给大家介绍第三个设计模式:策略模式

一.策略模式是对象的行为模式,用意是对一组算法的封装。动态的选择需要的算法并使用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.总结优点:动态改变算法或行为缺点:客户端必须知道所有的策略类,并自行决定使用哪一个策略类,必须对每一个算法了解作者:飞行鱼 QQ:6868861 推荐J2EE群:7715552

?

热点排行