UML类图:

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

模板方法父类:

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();
	}

}

相关文章:

  • 2021-04-04
  • 2021-11-21
  • 2021-10-28
  • 2021-08-30
  • 2022-01-05
  • 2021-04-15
  • 2021-12-31
  • 2021-06-12
猜你喜欢
  • 2021-12-21
  • 2021-10-11
  • 2022-01-09
  • 2021-08-30
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案