通过使用抽象类等,定义一个算法骨架,而将一些步骤延迟到子类中,使子类可以不改变一个算法的结构即可重新定义该算法的特定步骤.
适用场合:要完成某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同.
Template.java
package com.gary.designpattern.template;
/**
* 抽象模板
* @author gary
*
*/
public abstract class Template {
/**
* 模板方法,算法骨架
*/
public void sayHello(){
System.out.println("Hello" + getType());
}
/**
* 在子类中实现
* @return
*/
public abstract String getType();
}
HelloA.java
package com.gary.designpattern.template;
public class HelloA extends Template {
/**
* 实现
*/
@Override
public String getType() {
return "A";
}
}
HelloB.java
package com.gary.designpattern.template;
public class HelloB extends Template {
/**
* 实现
*/
@Override
public String getType() {
return "B";
}
}
Test.java
package com.gary.designpattern.template;
/**
* 测试
* @author gary
*
*/
public class Test {
public static void main(String[] args) {
HelloA helloA = new HelloA();
helloA.sayHello();
System.out.println("=========split=======");
HelloB helloB = new HelloB();
helloB.sayHello();
}
}