Java 模板方法模式的实现

本文介绍了Java中的模板方法模式,包括定义、使用场景、UML类图及代码示例。展示了如何通过固定流程实现不同子类的具体算法实现。

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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/u010046908/article/details/50600552
Java 模板方法模式的实现
1.定义:
定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使子类可以不改变一个算法的结构。可以重新定义该算法的某些特定步骤。
2.使用场景:
(1).多个子类有公有的方法,并且逻辑基本相同。
(2).重要、复杂的算法,可以把核心算法设计为模板方法,周边相关的细节则在子类中实现。
(3).重构时,模板方法模式是一个经常使用的模式,把相同的代码抽到父类中,然后通过钩子方法函数约束其行为。
     3.UML类图

 4.模板方法的简单示例
 模板方法的实际是封装一个固定的流程,就像是一套执行模板一样,第一步该做什么,第二部该做什么都是已经
 在抽象类中定义好了。而子类可以有不同的算法实现。在框架不被修改的情况下实现某些步骤的算法替换。下面
 打开计算机的的动作的简单模板方法。

        5.代码实战:

AbstractComputer .java

    

package abs;
/**
 * 
 * @author lidong
 *
 */
public abstract class AbstractComputer {


public void powerOn() {
System.out.println("打开电源");
}


public void checkHardware() {
System.out.println("检查硬件");
}


public void loadOS() {
System.out.println("加入操作系统");
}


public void login() {
System.out.println("小白的计算机无验证,直接进入系统");
}

public  final void startUp(){
System.out.println("=====开机==start======");
powerOn();
checkHardware();
loadOS();
login();
System.out.println("=====关机==stop======");
}
}

package abs;
/**
 * 程序员的计算机
 * @author lidong
 *
 */
public class CoderComputer extends AbstractComputer {

@Override
public void login() {
super.login();
System.out.println("程序员只需要进行用户和密码的验证就可以了");
}


}



public class MilitaryComputer  extends AbstractComputer{
    
@Override
public void checkHardware() {
super.checkHardware();
System.out.println("检查硬件防火墙");
}

@Override
public void login() {
super.login();
System.out.println("进行指纹识别");
}

}



package abs;

测试程序:
public class Test {


public static void main(String[] args) {
       AbstractComputer comp = new CoderComputer();
       comp.startUp();
       
       comp = new MilitaryComputer();
       comp.startUp();
}


}



结果:

=====开机==start======
打开电源
检查硬件
加入操作系统
小白的计算机无验证,直接进入系统
程序员只需要进行用户和密码的验证就可以了
=====关机==stop======
=====开机==start======
打开电源
检查硬件
检查硬件防火墙
加入操作系统
小白的计算机无验证,直接进入系统
进行指纹识别
=====关机==stop====== 


Demo的下载地址:

https://github.com/lidong1665/JAVA_DESIGN_PATTERNS

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值