解决的问题:
1)当功能内部一部分实现是确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。
2)编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是一种模板模式。
代码示例:
//模板方法设计模式 /* * 解决的问题: * 当功能内部一部分实现是确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。 * 编写一个抽象父类,父类提供了多个子类的通用方法,并把一个或多个方法留给其子类实现,就是一种模板模式 * */ public class TestTemplate { public static void main(String[] args) { new SubTemplate().spendTime(); } } abstract class Template { public abstract void code(); public void spendTime() { long star = System.currentTimeMillis(); code(); long end = System.currentTimeMillis(); System.out.println("花费的时间为:" + (end - star)); } } class SubTemplate extends Template { @Override public void code() { boolean flag = false; //求100000的所有质数 for (int i = 2; i <= 100000; i++) { for (int j = 2; j <= Math.sqrt(i); j++) { if (i % j == 0) { flag = true; break; } } if (!flag) { System.out.println(i); } flag = false; } } }结果:
2
3
5
7
11
13
17
19
....99971
99989
99991花费的时间为:162
本文介绍了一种常用的设计模式——模板方法模式。该模式通过定义一个抽象父类提供通用方法并预留子类实现的机制,使得子类可以复用部分算法而重写其他部分。示例展示了如何使用模板方法模式来计算10万内的所有质数。
&spm=1001.2101.3001.5002&articleId=88947537&d=1&t=3&u=60e318c047f441e39d0a81136906ac65)
1579

被折叠的 条评论
为什么被折叠?



