java 28 - 2 设计模式之 模版设计模式

本文深入解析模板设计模式,一种定义算法骨架并允许子类提供具体实现的设计模式。通过实例演示如何将程序运行时间计算模块化,提高代码复用性和灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模版设计模式

  模版设计模式概述

  模版方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现

  优点

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

  缺点

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

 

例子:

  如果我想知道一个程序运行所花费的时间,那么为了程序更符合面向对象思想设计原则。

就应该把   “运行的程序”、“时间的计算”、“启动这两个类” 分开成3个类来做。

  其中“事件的计算”就是个模版设计,定义一个算法的骨架,将具体的算法延迟到子类中来实现。里面是抽象类和抽象方法

  而“运行的程序”则是继承了“事件的计算”,重写它的抽象方法。

 

代码:

  “时间的计算”

 1 /*
 2  这是个计算程序运行事件的算法骨架
 3  */
 4 
 5 //有抽象方法,必须抽象类
 6 public abstract class GetTime {
 7 
 8     public long getTime() {
 9 
10         // 获取启动时的时间
11         long starttime = System.currentTimeMillis();
12 
13         // 调用抽象方法
14         code();
15 
16         // 获取结束时间
17         long endtime = System.currentTimeMillis();
18 
19         // 返回运行所花时间
20         return endtime - starttime;
21 
22     }
23 
24     // 抽象方法
25     public abstract void code();
26 
27 }

  

  “运行的程序”

 1 public class ForDemo extends GetTime {
 2 
 3     public void code() {
 4 
 5         for (int x = 0; x < 10000; x++) {
 6             System.out.println(x);
 7         }
 8 
 9     }
10 
11 }

 

  “启动两个类”

 1 public class GetTimeDemo {
 2 
 3     public static void main(String[] args) {
 4 
 5         // 创建GetTime抽象类的对象,需要这个类的具体实现类
 6         GetTime g = new ForDemo();
 7 
 8         System.out.println("花费时间:" + g.getTime() + "毫秒");
 9 
10     }
11 
12 }

 

转载于:https://www.cnblogs.com/LZL-student/p/5970232.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值