策略模式(Strategy Pattern),我们可以和实际生活联在一起。比如我们每天上班的出行选择,可以是坐公交,也可以是开车、骑自行车等。
其实这种出行方式的选择就是策略模式的一种体现。
我们有一个抽象出来的出行
概念:
出行()
然后可以有不同的具体的选择:
锻炼身体可以选择:
骑自行车()
开车方便的话,可以选择:
开车()
绿色出行除了骑行,也可以选择:
坐公交车()
其实不同的出行选择就是封装起来的对出行的不同的实现(算法)。
如下图所示:
策略模式有以下几个特点:
1、定义多个算法
2、封装算法
3、这多个算法可互换
我们可以看一下具体的代码:
/** * 定义抽象接口 */ public interface Traffic { public void goToWork(); }
公交:
public class Bus implements Traffic{ @Override public void goToWork() { System.out.println("坐公交车"); } }
开车:
public class Car implements Traffic{ @Override public void goToWork() { System.out.println("开车"); } }
小明去上班:
public class XiaoMing { public static void main(String[] args) { Traffic traffic = new Bus(); traffic.goToWork(); } }
执行打印输出:
今天怎么去上班: 公交车
这就是策略模式,有比较好的扩展性,能解决很多实际问题。
来源:oschina
链接:https://my.oschina.net/mingshashan/blog/3213126