一句话定义:
定义一系列算法并单独封装,使他们可以相互替换。
使用场景:
1. 不同的类实现方式不同,通过直接行为进行区分
2. 之间具有内在的相似联系
实现要点:
1. 实现同一个接口
2. 每一个方法封装成一个类
情景假设:
放春节有很多种回家的方式,火车、汽车、飞机,每一种方式都对应一种策略。
实现步骤:
1. 创建策略接口
/**
* Created by ffengz.
*
* 回家策略接口
*/
public interface GoHomeStrategy {
String goHome();
}
2. 创建实现接口的具体策略类
/**
* Created by ffengz.
*
* 汽车回家策略
*/
public class CarStrategy implements GoHomeStrategy{
@Override
public String goHome() {
return "汽车回家 花费 150元";
}
}
/**
* Created by ffengz.
*
* 火车回家策略
*/
public class SubwayStrategy implements GoHomeStrategy{
@Override
public String goHome() {
return "火车回家 花费 100元";
}
}
/**
* Created by ffengz.
*
* 飞机回家策略
*/
public class PlaneStrategy implements GoHomeStrategy {
@Override
public String goHome() {
return "飞机回家 花费 300元";
}
}
3. 创建策略容器类,将策略整合在一起
/**
* Created by ffengz.
*
* 回家策略集合封装容器类
*/
public class GoHomeContext {
private GoHomeStrategy strategy;
/**
* 策略选择
*/
public void setStrategy(GoHomeStrategy strategy) {
this.strategy = strategy;
}
/**
* 执行该策略
*/
public String goHomeBySubway(){
return strategy.goHome();
}
}
4. 具体使用策略
GoHomeContext goHomeContext = new GoHomeContext();
goHomeContext.setStrategy(new CarStrategy());
String info = goHomeContext.goHomeBySubway();
Log.i("info", "onCreate: ==++" + info);