一、策略模式定义
定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们之间可以相互替换,策略模式可以在不影响客户端的情况下发生变化。
好了,定义看看就完了,我知道你很烦看定义。
二、策略模式涉及到的三个角色
环境(Context)角色 持有一个Strategy的引用
抽象策略(Strategy)角色 这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
具体策略(ConcreteStrategy)角色 包装了具体的算法或行为。
三、策略模式使用举例
还是赶快看代码吧,知道你看上面定义都烦死了。
我们写一个简单的Demo来对策略模式进行更深的理解,我们模拟游戏中玩家参与一个活动购买金币,普通玩家没有折扣,高级玩家9折优惠,VIP玩家7折优惠。
首先我们定义一个接口,这就是抽象策略角色,如下:
1 public interface GameStrategy { 2 3 public void goldCoin(); 4 5 }