设计模式--模板方法模式 (Template Method)

  模板方法模式的目的就是在一个方法中实现一个算法,并将算法中某些步骤的定义推迟,从而使得其他类可以重新定义这些步骤。

  在编写一个方法的时候,考虑到算法的某些步骤可能会有不同的实现方式,我们可能会首先定出算法的框架。这样,在定义方法的时候,我们可以将某些步骤定义为抽象方法,或者是将它们定义为存根方法,也可以将它们定义为某个单独接口中的方法,这就是模板方法模式的实现。
  模板方法的典型例子就是排序。java.util.Collections类将sort()方法定义为一个模板方法,而将其中的比较交给用户来实现,sort()方法所接受的List中的对象需要实现Comparator接口,这就是将实际算法推迟并交给其它类来实现的模板方法模式。

  例:
  我们有一个抽象类ShowSubClassName,有两个子类SubClassA和SubClassB继承了该抽象类,抽象类中定义的抽象方法showName()被推迟到了两个子类中实现(分别输出自己的class name)。

public abstract class ShowSubClassName {
	/**
	 * 这个方法的实现,我们交给子类完成
	 */
	public abstract void showName();
 
	public void show() {
		showName();
	}
}
public class SubClassA extends ShowSubClassName {
	public void showName() {
		System.out.println(this.getClass().getName());
	}
}
public class SubClassB extends ShowSubClassName {
 
	public void showName() {
		System.out.println(this.getClass().getName());
	}
 
}
public class Test {
	public static void main(String[] args) {
		ShowSubClassName classA = new SubClassA();
		classA.show();
 
		ShowSubClassName classB = new SubClassB();
		classB.show();
	}
}

发表评论

邮箱地址不会被公开。 必填项已用*标注