设计模式-template

在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。Template Method提供了这种情况的一个实现框架。


Template Method模式是采用继承的方式实现这一点:将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。

 

   Strategy模式解决的是和Template Method模式类似的问题,但是Strategy模式是将逻辑(算法)封装到一个类中,并采取组合(委托)的方式解决这个问题。

 

   解决这个问题可以采取两种模式来解决,一是Template模式,二是Strategy模式。本文给出的是Template Method模式。一个通用的Template Method模式的结构图为:

设计模式-template_第1张图片


Demo如下:

public abstract class AbstractClass {
	public void templateMethod() {
		this.primitive1();
		this.primitive2();
	}
	
	protected abstract void primitive1();
	protected abstract void primitive2();

}

public class EntityClass1 () {

	public class EntityClass1() {};
	
	@override
	protect void primitive1() {
		System.out.println("EntityClass1.primitive1 called");
	}
	
		@override
	protect void primitive2() {
		System.out.println("EntityClass1.primitive2 called");
	}
	
}


public class EntityClass2 () {

	public class EntityClass2() {};
	
	@override
	protect void primitive1() {
		System.out.println("EntityClass2.primitive1 called");
	}
	
		@override
	protect void primitive2() {
		System.out.println("EntityClass2.primitive2 called");
	}
	
}



你可能感兴趣的:(设计模式-template)