? ? ? ?模板方法模式很常用,其目的是在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。
?
概念:定义一个算法的骨架,而将一些实现步骤延迟到子类中。
把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。
?一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
?
?
这种标准的模板模式是:父类是一个抽象类,实现了大部分固定的方法,然后有某个核心算法因为当时不好确定,会留给他的子类去实现。
具体步骤请看代码:
?
class="java">package com.Template;
public abstract class Car {
public abstract void drive(String location);
public void addGas(){
System.out.println("去加油站加油");
}
public void stop(){
System.out.println("发动机熄火");
}
public void toHangzhou(){
addGas();
this.drive("杭州");//核心方法,留给子类去实现
stop();
}
}
?
?
?
package com.Template;
public class CarImpl extends Car{
public CarImpl(){
}
@Override
public void drive(String location) {
System.out.print("开车去"+location);
}
}
?
package com.Template;
public class Test {
public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException{
Car car = new CarImpl();
car.toHangzhou();
}
}
?