模板方法(Template Method)
比较常用的设计模式,对于一套固定的流程式的代码,在抽象类中定义流程运转的骨架,由子类来实现具体的细节
典型的像spring 的AbstractApplicationContext的refresh方法 Reentrlock的AQS使用等等
demo
- 抽象类
/**
* @author Xiaoyingge
* @description
* @date 2020/5/6 22:01
*/
public abstract class AbstractTemplateMethod {
protected abstract void getUp ();
protected abstract void putOnClothes ();
protected abstract void brushTeeth ();
protected abstract void lockDoor ();
public void getOut () {
this.getUp();
this.putOnClothes();
this.brushTeeth();
this.lockDoor();
}
}
- 具体实现
/**
* @author Xiaoyingge
* @description
* @date 2020/5/6 22:04
*/
public class DefaultTemplateMethod extends AbstractTemplateMethod {
@Override
protected void getUp () {
System.out.println("getUp");
}
@Override
protected void putOnClothes () {
System.out.println("putOnClothes");
}
@Override
protected void brushTeeth () {
System.out.println("brushTeeth");
}
@Override
protected void lockDoor () {
System.out.println("lockDoor");
}
}
- 测试
/**
* @author Xiaoyingge
* @description
* @date 2020/5/6 22:05
*/
public class Main {
public static void main (String[] args) {
DefaultTemplateMethod method = new DefaultTemplateMethod();
method.getOut();
}
}