什么是策略模式
1.策略其实就是各种行为.当我们出门的时候会选择多种的出行方式,比如坐公交,骑自行车,坐飞机,做高铁.这都是行为,也就是策略.但他们都有共同的特性,其实是一种行为--出行.其实放在Java中可以这么认为,他们都实现了一个接口-出行,然后然后做出不同的实现出行的方式公交,火车...
例:
//定义接口,出行方式
public interface TripMode {
void doTrip();
}
//实际出行时,不管是乘坐汽车,飞机
public class Trip {
TripMode tripMode;
Trip(TripMode tripMode) {
this.tripMode = tripMode;
}
public void trip() {
tripMode.doTrip();
}
public static void main(String[] args) {
//构建同一个对象,有不同的行为
TripMode tripByCar = new TripByCar();
new Trip(tripByCar).trip();
TripMode tripByAirport = new TripByAirport();
new Trip(tripByAirport).trip();
}
//出行方式为car
static class TripByCar implements TripMode {
@Override
public void doTrip() {
System.out.println("Trip by car!");
}
}
//出行方式为airport
static class TripByAirport implements TripMode {
@Override
public void doTrip() {
System.out.println("Trip by airport!");
}
}
}
优缺点及应用场景
- 优点:
1.具体行为可以自由切换
2.有效避免多重条件判断
3.扩展性好,增加策略实现一个接口就行 - 缺点:
1.会写很多类,而且复用性很低
2.类都需要对外暴露 - 应用场景:
1.多个类,行为一致,具体实现不同
2.打折促销算法
3.Java的Comparable接口
网友评论