黑马程序员_模版方法设计模式

------- android培训、java培训、期待与您交流! ----------

模版方法设计模式

第一部分

1、模版方法设计模式

在定义功能时,功能的一部分是确定的,但是有一部分是不确定的,而确定的部分在使用不确定的部分,那么这时就将不确定的部分暴露出去,由该类的子类完成;

2、模版模式的好处

2.1、提高了代码的扩展性;

2.2、提高了代码的复用性;

3、模版模式应用的简单原则

3.1、抽象父类可以定义需要使用的某些方法,其余留给子类去实现;
3.2、父类提供的方法只是定义了一个通用方法,其实现必须依赖子类的辅助;

4、举例

需求:获取一段程序运行的时间;
原理:获取程序开始和结束时间并相减即可;
获取时间:System类里面有个static long currentTimeMillis()

5、模版模式的代码体现

<span style="font-size:14px;">//类也是抽象类
abstract class GetTime
{
//	为了避免被子类复写,将该方法定义成final
	public final void getTime()//不让子类复写,
	{
//		获取开始时间
		long start = System.currentTimeMillis();
//		由于需要运行的代码是不确定的,那么单独把这边的代码封装一下
//		直接调用就可以了,
		runCode();//这个功能是不确定的功能
//		获取结束时间
		long end = System.currentTimeMillis();
		System.out.println("毫秒::"+(end-start));
	}
//	把这个方法单独提取出来,单独封装一个方法,方便于子类去复写,
//	这段代码不知道是什么,因此必然是抽象的;
	public abstract void runCode();
}
//SubTime继承了GetTime,复写父类里面的方法
class SubTime extends GetTime
{
	public void runCode()
	{
		for(int x=0;x<4000;x++)
		{
			System.out.println(x);
		}
	}
}
class  TemplateDemo
{
	public static void main(String[] args) 
	{
		SubTime gt = new SubTime();//建立子类对象
		gt.getTime();//调用父类方法;
	}
}</span><strong style="font-size:18px;">
</strong>

6、运行的结果



第二部分

我的总结

1、如果父类的方法不想被子复写,那么可以在前面加上final关键字修饰;
2、父类的一部分代码要暴露(public)出去,但是父类中的方法不一定是抽象的;

发布了40 篇原创文章 · 获赞 0 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/java9832/article/details/46400913