码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式-模版方法模式

时间:2015-01-11 12:23:42      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:设计模式   模版方法   

模版方法是一个非常简单,使用频率比较高的设计模式。

意图:

定义一个操作中算法的骨架,而将将一些方法的实现延迟到子类中,TemplateMethod使得子类可以不改变算法的结构即可重定义算法的特定方法。

参与者:

AbstractClass,抽象类。定义抽象的操作,具体的子类将重新定义各自的实现算法。

ConcreteClass,具体的实现类。

回想一下,在之前的开发中用到过这种模式,简单描述一下场景。

在轻松天气项目中,主程序生成widget,由于widget插件不断的扩充和升级,具体的布局和配置会变化,所以主程序要适应不同版本的widget插件,然而生成插件的方法是不变的,在这里就是AbstractClass,其中模版方法就是buildFourTwoWidget(), buildFourOneWidget()等方法,这个方法里面调用读取插件配置的抽象方法,例如,setBackground(), setImageView()等,不同版本会有相应的实现。

一个简单的源码实现:

package com.zqwei.templatemethod;

public abstract class AbstractClass {
	public void buildFourTwoWidget() {
		setBackground();
		setFontColor();
	}
	
	public abstract void setBackground();
	
	public abstract void setFontColor();
}


public class APILevelFiveClass extends AbstractClass {

	@Override
	public void setBackground() {
		System.out.println("api level five set background.");
	}

	@Override
	public void setFontColor() {
		System.out.println("api level five set font color.");
	}

}


public class APILevelFourClass extends AbstractClass {

	@Override
	public void setBackground() {
		System.out.println("api level four set background.");
	}

	@Override
	public void setFontColor() {
		System.out.println("api level four set font color");
	}

}


设计模式-模版方法模式

标签:设计模式   模版方法   

原文地址:http://blog.csdn.net/hello0370/article/details/42609713

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!