定义一系列算法,这些算法可以被其他替代,例如A到B成为方式,可以是火车可以飞机,那么方式下面就有两个不同的算法。把多个不同的算法封装起来,需要哪个的时候调用哪个。
例子:某个人需要从上海到北京,如果只有3小时则飞机,5小时则高铁,12小时则火车。
定义一个接口,这个接口是旅程的实现方式
TrainTool
public interface TrainTool {
public String selectTool(int times);
}
分别实现三种方式
public class ByAir implements TrainTool{
@Override
public String selectTool(int times) {
// TODO Auto-generated method stub
System.out.println("乘坐飞机");
return "byPlane";
}
}
public class ByGaoTie implements TrainTool{
@Override
public String selectTool(int times) {
// TODO Auto-generated method stub
System.err.println("乘坐高铁");
return "byGaoTie";
}
}
public class ByTrain implements TrainTool{
@Override
public String selectTool(int times) {
// TODO Auto-generated method stub
System.out.println("乘坐火车");
return "byTrain";
}
}
一个实体类,这个实体类包含这个乘坐方式的处理
public class MyTime {
private TrainTool myTrainTool;
public MyTime(TrainTool myTrainTool){
this.myTrainTool = myTrainTool;
}
public String select(int time) {
return myTrainTool.selectTool(time);
}
}
具体使用:
public class MyTest {
public static void main(String[] args) {
//因为知道时间是5小时,所以需要乘坐高铁,所以实例化高铁,但是这个是客户端做的,客户端是需要if else一下,但是这个操作对服务端是透明的
TrainTool myTrain=new ByGaoTie();
MyTime time=new MyTime(myTrain);
String tool=time.select(5);
System.out.println("方式"+tool);
}
}