谋略模式(Strategy模式)
策略模式(Strategy模式)1. 以一个算术运算为例,传统做法为:package?org.strategy ??/** ??*?客户端 ??*/?
策略模式(Strategy模式)
1. 以一个算术运算为例,传统做法为:
- package?org.strategy; ??
- /** ?
- ?*?客户端 ?
- ?*/??
- public?class?Test?{ ??
- ???? ??
- ????public?static?void?main(String[]?args){ ??
- ????????float?a?=?200; ??
- ????????float?b?=?25; ??
- ???????? ??
- ????????ContextRole?contextRole1?=?new?ContextRole(new?AddStrategy()); ??
- ????????System.out.println(contextRole1.calculate(a,?b)); ??
- ???????? ??
- ????????ContextRole?contextRole2?=?new?ContextRole(new?SubStrategy()); ??
- ????????System.out.println(contextRole2.calculate(a,?b)); ??
- ???????? ??
- ????????ContextRole?contextRole3?=?new?ContextRole(new?MultStrategy()); ??
- ????????System.out.println(contextRole3.calculate(a,?b)); ??
- ???????? ??
- ????????ContextRole?contextRole4?=?new?ContextRole(new?DivisionStrategy()); ??
- ????????System.out.println(contextRole4.calculate(a,?b)); ??
- ???????? ??
- ????} ??
- ??
- } ??
?
输出结果为:
相加结果为:225.0
相减结果为:175.0
相乘结果为:5000.0
相除结果为:8.0
总结:
策略模式优点:
1.可以很方便的动态改变算法或行为
2.避免使用多重条件转移语句
策略模式缺点:
1.客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2.造成很多的策略类。
1 楼 sunqi 2008-07-17 hao,jian dan ming liao 2 楼 dfjinn 2008-10-28 不错,学习了。