策略模式使我们可以整体的替换算法的实现部分,轻松的以不同的算法去解决同一个问题。
类图:
这里书上的代码还是比较复杂的,就不放了,搞清楚各类之间的关系,体会设计模式即可。Hand
类是用来表示石头剪刀布游戏手势的类。Strategy
代表出手的策略。WinningStrategy
代表出如果上一轮赢了,就继续出,输了就随机出的策略。ProbStrategy
选择过去的结果中胜率最大的手势来出。具体的实现就不放了。Player
代表玩家,生成实例时需要传入姓名和所使用策略的实例。在Main
函数中可以方便的生成两个使用不同策略的Player
进行游戏。
策略模式就是这样,具体的代码可以参考《图解设计模式》中所给代码,可以在图灵社区的网站上找到。顺便再提一句,由于lambda表达式的存在,Java8中可以轻易的实现策略模式。