内容简介:策略模式属于行为型设计模式,策略模式中,提供一组策略,每种策略都封装为一个类,每个策略可以相互替换,由客户端决定使用哪种策略在系统中提供一组策略,并将每个策略封装成类,使他们可以相互转换,具体策略的选择由客户端决定,这就叫策略模式,当系统中有很多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设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
文本上的算法——深入浅出自然语言处理
路彦雄 / 人民邮电出版社 / 2018-3-1 / 69.00元
本书结合作者多年学习和从事自然语言处理相关工作的经验,力图用生动形象的方式深入浅出地介绍自然语言处理的理论、方法和技术。本书抛弃掉繁琐的证明,提取出算法的核心,帮助读者尽快地掌握自然语言处理所必备的知识和技能。本书主要分两大部分。第一部分是理论篇,包含前3章内容,主要介绍一些基础的数学知识、优化理论知识和一些机器学习的相关知识。第二部分是应用篇,包含第4章到第8章,分别针对计算性能、文本处理的术语......一起来看看 《文本上的算法——深入浅出自然语言处理》 这本书的介绍吧!