/*
模板方法模式:
在定义功能时,功能的一部分是确定的,而还有一部分是不确定的,这样就把不确定的
部分暴露出去,让该类的子类区完成。
例: 计算一段程序的运行时间(获取时间:System.currentTimeMillis())
*/
abstract class GetTime
{
public final void getTime()//final是为了防止被子类覆盖(因为code()被暴露在该方法外所以可以被覆盖)
{
long start = System.currentTimeMillis();//确定功能
code();//不确定功能
long end = System.currentTimeMillis();//确定功能
System.out.println(end-start);//确定功能
}
public abstract void code();//将需要变化的代码暴露出来(此处不清楚是什么功能故用abstract抽象,若有固定初始方法也可以
}
class Time extends GetTime//用子类覆盖code方法(用子类来插入对象方法)
{
public void code()
{
for(int i=0;i<1000;i++)
System.out.print('a');
}
}
class MI
{
public static void main(String[] args)
{
Time t= new Time();//调用子类
t.getTime();
}
}
java 基础 (模板方法设计)
最新推荐文章于 2024-11-18 09:02:45 发布