内容简介:策略模式属于行为型设计模式,策略模式中,提供一组策略,每种策略都封装为一个类,每个策略可以相互替换,由客户端决定使用哪种策略在系统中提供一组策略,并将每个策略封装成类,使他们可以相互转换,具体策略的选择由客户端决定,这就叫策略模式,当系统中有很多if…else的时候可以考虑使用策略模式,策略模式可以灵活的增加策略类,进行扩展,但是可能会由于策略过多导致,策略类太多
策略模式属于行为型设计模式,策略模式中,提供一组策略,每种策略都封装为一个类,每个策略可以相互替换,由客户端决定使用哪种策略
什么是策略模式
在系统中提供一组策略,并将每个策略封装成类,使他们可以相互转换,具体策略的选择由客户端决定,这就叫策略模式,当系统中有很多if…else的时候可以考虑使用策略模式,策略模式可以灵活的增加策略类,进行扩展,但是可能会由于策略过多导致,策略类太多
类图
- TripStrategy:策略接口
- BicycleTripStrategy,CarTripStraregy:实现了策略接口的具体策略类
- TripContext:使用某种策略的类
实现
TripStrategy
/** * @author: chenmingyu * @date: 2019/2/21 18:15 * @description: 出行策略 */ public interface TripStrategy { /** * 出行方式 */ void tripMode(); }
BicycleTripStrategy
/** * @author: chenmingyu * @date: 2019/2/21 18:19 * @description: 自行车出行策略类 */ public class BicycleTripStrategy implements TripStrategy{ @Override public void tripMode() { System.out.println("选择骑自行车出行"); } }
CarTripStraregy
/** * @author: chenmingyu * @date: 2019/2/21 18:21 * @description: 开车出行策略类 */ public class CarTripStraregy implements TripStrategy { @Override public void tripMode() { System.out.println("选择开车出行"); } }
TripContext
/** * @author: chenmingyu * @date: 2019/2/21 18:22 * @description: 策略context */ public class TripContext { /** * 出行策略 */ private TripStrategy tripStrategy; public TripContext(TripStrategy tripStrategy) { this.tripStrategy = tripStrategy; } /** * 选择出行策略 */ public void chooseTripMode(){ this.tripStrategy.tripMode(); } }
测试
public static void main(String[] args) { TripContext tripContext = new TripContext(new BicycleTripStrategy()); tripContext.chooseTripMode(); System.out.println("换一种出行方案"); tripContext = new TripContext(new CarTripStraregy()); tripContext.chooseTripMode(); }
输出
选择骑自行车出行 换一种出行方案 选择开车出行
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
程序员代码面试指南:IT名企算法与数据结构题目最优解
左程云 / 电子工业出版社 / 2015-9 / 79.00元
这是一本程序员面试宝典!书中对IT名企代码面试各类题目的最优解进行了总结,并提供了相关代码实现。针对当前程序员面试缺乏权威题目汇总这一痛点,本书选取将近200道真实出现过的经典代码面试题,帮助广大程序员的面试准备做到万无一失。“刷”完本书后,你就是“题王”!__eol__本书采用题目+解答的方式组织内容,并把面试题类型相近或者解法相近的题目尽量放在一起,读者在学习本书时很容易看出面试题解法之间的联......一起来看看 《程序员代码面试指南:IT名企算法与数据结构题目最优解》 这本书的介绍吧!