`
return_space
  • 浏览: 20061 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

模板方法模式

阅读更多

模板方法模式:该模式主要思想是,通过抽象类(AbstractClass)对外提供调用入口【templateMethod()】,该入口方法有抽象类实现,抽象类有一些抽象方法【operationOne()、operationTwo()】,是子类【】必须实现的。通过调用入口进行调用子类实现的抽象方法,也可以根据不同的参数调用不同的具体实现类。

 

示例代码如下:

package com.mkf.pattern;

public abstract class AbstractClass {
	public final void templateMethod(){
		operationOne();
		operationTwo();
	}
	
	abstract public void operationOne();
	
	abstract public void operationTwo();
}

package com.mkf.pattern;

public class ClassOne extends AbstractClass {

	@Override
	public void operationOne() {
		System.out.println("ClassOne 的 operationOne 被调用");
	}

	@Override
	public void operationTwo() {
		System.out.println("ClassOne 的 operationTwo 被调用");
	}

}

package com.mkf.pattern;

public class ClassTwo extends AbstractClass {

	@Override
	public void operationOne() {
		System.out.println("ClassTwo 的 operationOne 被调用");
	}

	@Override
	public void operationTwo() {
		System.out.println("ClassTwo 的 operationTwo 被调用");
	}

}

package com.mkf.pattern;

public class TestTemplateMethod {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		AbstractClass acOne = new ClassOne();
		acOne.templateMethod();
		AbstractClass acTwo = new ClassTwo();
		acTwo.templateMethod();
		
	}

}

 运行结果:

ClassOne 的 operationOne 被调用
ClassOne 的 operationTwo 被调用
ClassTwo 的 operationOne 被调用
ClassTwo 的 operationTwo 被调用

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics