定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法是的子类可以不改变一个算法的结构即可冲定义该算法的某些特定步骤
就是我们把不变的方法方到超类中,在子类中是实现自己的不同的特有的方法,这样子类中的重复代码就会变少;
比如我们要出门远行的时候大家基本上都是先打包行李,然后乘坐交通工具,然后到了目的地之后登记入住宾馆;整个过程好像都是一样的,只是随着科技发展,大家的交通工具越来越多,可以自驾,可以火车,飞机等等;这样我们就可以通过代码来看一下模板方法;
Templete类:
public abstract class Template {
public void goOut() {
System.out.println("Packing my luggage");
trafficTransportation();
System.out.println("check in hotel");
}
public abstract void trafficTransportation();
}
LiMing 类:
public class LiMing extends Template{
@Override
public void trafficTransportation() {
System.out.println("I by train");
}
}
王红类:
public class WangHong extends Template{
@Override
public void trafficTransportation() {
System.out.println("I by car");
}
}
Client 类:
import org.junit.Test;
public class Client {
@Test
public void templeteTest() {
Template liming = new LiMing();
liming.goOut();
Template wanghong1 = new WangHong();
wanghong1.goOut();
}
}
从上面可以看出,李明选择了火车而王红选择了自驾,这样就减少了他们之间的共同的代码,而只在他们中给除了选择不同交通工具的方法;