7.策略模式
Posted li-zhi-long
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.策略模式相关的知识,希望对你有一定的参考价值。
1.平常会遇到这样的事情,完成同一个功能可以使用不同的方式,比如排序,可以使用冒泡排序也可以使用快速排序。策略模式就是符合这样的情况,当完成一件事有多种实现方式,可以根据环境或者其他条件去选择不同的方式去实现。避免了硬编码的方式,扩展和变更更加方便。避免了代码的重复,算的使用和算法的实现分离开。
2.下面以去西藏为例,我们可以选择乘坐火车,骑自行车,步行,这三种方式都可以到达拉萨。我们可以根据不同的的情况灵活选择出行的方式。
3.实现
package com.java.dp.strategy; /** * @Author lizhilong * @create 2019/12/5 16:58 * @desc 出行策略接口 */ public interface Traffic { void trafficType(String name); }
package com.java.dp.strategy; /** * @Author lizhilong * @create 2019/12/5 16:59 * @desc 火车出行 */ public class TrainType implements Traffic { @Override public void trafficType(String name) { System.out.println(name+":坐上火车去拉萨"); } }
package com.java.dp.strategy; /** * @Author lizhilong * @create 2019/12/5 17:01 * @desc 步行出行 */ public class WalkType implements Traffic { @Override public void trafficType(String name) { System.out.println(name+":步行去拉萨"); } }
package com.java.dp.strategy; /** * @Author lizhilong * @create 2019/12/5 17:01 * @desc 自行车出行 */ public class BikeType implements Traffic { @Override public void trafficType(String name) { System.out.println(name+":骑上自行车去拉萨"); } }
package com.java.dp.strategy; import java.util.HashMap; import java.util.Map; /** * @Author lizhilong * @create 2019/12/5 17:03 * @desc 选择出行策略 */ public class GoToTibet { private static Map<String,Traffic> strategyMap = new HashMap<>(); static { strategyMap.put("小张",new TrainType()); strategyMap.put("小王",new BikeType()); strategyMap.put("小李",new WalkType()); } public void chooseTrafficType(String name){ Traffic traffic = strategyMap.get(name); traffic.trafficType(name); } }
package com.java.dp.strategy; /** * @Author lizhilong * @create 2019/12/5 17:05 * @desc */ public class StrategyMain { public static void main(String[] args) { GoToTibet goToTibet = new GoToTibet(); goToTibet.chooseTrafficType("小张"); System.out.println("---------------------- "); goToTibet.chooseTrafficType("小王"); System.out.println("---------------------- "); goToTibet.chooseTrafficType("小李"); } }
小张:坐上火车去拉萨 ---------------------- 小王:骑上自行车去拉萨 ---------------------- 小李:步行去拉萨
以上是关于7.策略模式的主要内容,如果未能解决你的问题,请参考以下文章