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

谋略模式(Strategy模式)

2012-10-25 
策略模式(Strategy模式)1. 以一个算术运算为例,传统做法为:package?org.strategy ??/** ??*?客户端 ??*/?

策略模式(Strategy模式)

1. 以一个算术运算为例,传统做法为:

                  1. package?org.strategy; ??
                  2. /** ?
                  3. ?*?客户端 ?
                  4. ?*/??
                  5. public?class?Test?{ ??
                  6. ???? ??
                  7. ????public?static?void?main(String[]?args){ ??
                  8. ????????float?a?=?200; ??
                  9. ????????float?b?=?25; ??
                  10. ???????? ??
                  11. ????????ContextRole?contextRole1?=?new?ContextRole(new?AddStrategy()); ??
                  12. ????????System.out.println(contextRole1.calculate(a,?b)); ??
                  13. ???????? ??
                  14. ????????ContextRole?contextRole2?=?new?ContextRole(new?SubStrategy()); ??
                  15. ????????System.out.println(contextRole2.calculate(a,?b)); ??
                  16. ???????? ??
                  17. ????????ContextRole?contextRole3?=?new?ContextRole(new?MultStrategy()); ??
                  18. ????????System.out.println(contextRole3.calculate(a,?b)); ??
                  19. ???????? ??
                  20. ????????ContextRole?contextRole4?=?new?ContextRole(new?DivisionStrategy()); ??
                  21. ????????System.out.println(contextRole4.calculate(a,?b)); ??
                  22. ???????? ??
                  23. ????} ??
                  24. ??
                  25. } ??

                  ?

                  输出结果为:

                  相加结果为: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   不错,学习了。

热点排行