? ? ? ?模板方法模式很常用,其目的是在一个方法中定义一个算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法的某些步骤。
?
概念:定义一个算法的骨架,而将一些实现步骤延迟到子类中。
把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。
?一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
?
?
这种标准的模板模式是:父类是一个抽象类,实现了大部分固定的方法,然后有某个核心算法因为当时不好确定,会留给他的子类去实现。
具体步骤请看代码:
?
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(); } }
?