模版模式和回调模式

原创内容,转载请注明出处

1、模版模式

模版模式,顾名思义,是指将一些通用的行为实现都已完成,然后一些可变的行为交由我们来实现完成。在实际生活中有很多这样的例子,比如填写合同协议或者其他文件,文件上已经有通用的信息,我们只需要填写我们的个人信息并且签名即可,该文件就是一个模版。

UML类图表示


 创建父类SuperClass

package com.test.designermodel.templatemodel;

public abstract class SuperClass {

	public void process(){
		System.out.println("通用方法实现开始");
		excute();
		System.out.println("通用方法实现结束");
	}
	
	protected abstract void excute();
}

 创建子类实现类ConcreteClass

package com.test.designermodel.templatemodel;

public class ConcreteClass extends SuperClass {

	@Override
	protected void excute() {
		System.out.println("---执行处理---");
	}

}

 编写Junit测试代码

	/**
	 * Java模版模式
	 */
	@Test
	public void testTemplateModel(){
		ConcreteClass concreteClass = new ConcreteClass();
		concreteClass.process();
	}

 测试结果如下

 
 

2、回调模式

回调模式在Spring中有大量应用,比如Spring 的DaoSupport系列类,都使用了模版和回调模式组合。

上述例子可以这样实现,将execute方法抽出来,做成一个接口。

UML类图表示

 

 

 创建Supportclass类

package com.test.designermodel.templatemodel.callback;

public class SupportClass {

	public void process(CallBack callBack){
		System.out.println("通用方法实现开始");
		callBack.excute();
		System.out.println("通用方法实现结束");
	}
}

 创建回调接口CallBack类

package com.test.designermodel.templatemodel.callback;

public interface CallBack {

	public void excute();
}

 创建Junit测试代码

	/**
	 * Java模版模式和回调模式
	 */
	@Test
	public void testTemplateModelAndCallback(){
		new SupportClass().process(new CallBack() {
			
			public void excute() {
				System.out.println("---------回调执行处理---------");
			}
		});
	}

 测试结果如下图

 

源代码如附件


 

如上测试结果客户端调用SupportClass类的方法,SupportClass类之后会反过来调用客户端的Callback接口方法。

猜你喜欢

转载自ylxy3058.iteye.com/blog/2225883
今日推荐