【JAVA设计模式】模板方法模式

UML类图:

模板方法模式UML类图

模板方法父类:

package com.jthao.design.des.templatemethod;

public abstract class AbstractClass {

	protected abstract void doAnyThing();

	protected abstract void doSomeThing();

	protected void hookMethod() {
		System.out.println("空方法");
	}

	private void concreteMethod() {
		System.out.println("已实现的基本方法,由AbstractClass类实现");
	}

	public void templateMethod() {
		hookMethod();
		concreteMethod();
		doAnyThing();
		doSomeThing();
	}

}

具体实现类A:

package com.jthao.design.des.templatemethod;

public class ConcreteClass1 extends AbstractClass {

	@Override
	public void doAnyThing() {
		System.out.println("ConcreteClass1 doAnyThing");
	}

	@Override
	public void doSomeThing() {
		System.out.println("ConcreteClass1 doAnyThing");
	}

	@Override
	public void hookMethod() {
		System.out.println("ConcreteClass1 重写父类方法");
	}

}

具体实现类B:

package com.jthao.design.des.templatemethod;

public class ConcreteClass2 extends AbstractClass {

	@Override
	public void doAnyThing() {
		System.out.println("ConcreteClass2 doAnyThing");
	}

	@Override
	public void doSomeThing() {
		System.out.println("ConcreteClass2 doAnyThing");
	}

}

测试类:

package com.jthao.design.des.templatemethod;

public class templateTest {

	public static void main(String[] args) {
		AbstractClass abstractClass1 = new ConcreteClass1();
		abstractClass1.templateMethod();

		AbstractClass abstractClass2 = new ConcreteClass2();
		abstractClass2.templateMethod();
	}

}