Java基础总结之设计模式(六)

模板设计模式:定义一个算法的骨架,而将具体的算法延迟到子类中实现。

优点:使用模板方法模式,在定义算法骨架的同时可以很灵活的实现具体的算法,满足用户灵活多变的需求。

缺点:如果算法骨架有修改的话,则需要修改抽象类。

下面是一个简单的模板设计模式(供参考):

public class GetTime {

	public long getTime() {
		long start = System.currentTimeMillis();

		for (int i = 0; i < 10000; i++) {
			System.out.println(i);
		}

		long end = System.currentTimeMillis();
		return end - start;
	}
}
public class Test {

	public static void main(String[] args) {
		GetTime g = new GetTime();
		long time = g.getTime();
		System.out.println(time + "毫秒");
	}
}

上面代码是我们平时的写法,获取执行这一万次代码的时间。那么这个时候如果我需要计算另外一个for循环的时间,要执行一千万次,时候由得修改源代码呢?同理,如果for循环我不要这个功能了,我要放入多线程,计算时间,又怎么处理呢?都去修改源码吗?不对,开闭原则讲的是对修改关闭,对扩展开放。所以模板模式就可以使用上啦:

public abstract class GetTime {

	public long getTime() {
		long start = System.currentTimeMillis();
		code();
		long end = System.currentTimeMillis();
		return end - start;
	}

	public abstract void code();
}
public class FromGetTime extends GetTime {

	@Override
	public void code() {
		for (int i = 0; i < 10000; i++) {
			System.out.println(i);
		}
	}

}
public class Test {

	public static void main(String[] args) {
		GetTime g = new FromGetTime();
		long time = g.getTime();
		System.out.println(time + "毫秒");

	}
}

也就是说,我可以根据这个模板,创建GetTime类的子类,通过写code()抽象方法,完成不同代码块执行的时间。这就是模板设计模式的一个简单总结。


注:以上文章仅是个人学习过程总结,若有不当之处,望不吝赐教。

猜你喜欢

转载自blog.csdn.net/m0_37265215/article/details/81950542