Java 模板方法模式的实现

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010046908/article/details/50600552 Java 模板方法模式的实现1.定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使子类可以不改变一个算法的结构。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/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

相关文章
|
2月前
|
设计模式 算法 Java
Java设计模式-模板方法模式(14)
Java设计模式-模板方法模式(14)
|
3月前
|
设计模式 算法 Java
【揭秘】如何巧妙运用Java模板方法模式,让你的代码优雅升级?
【8月更文挑战第30天】模板方法模式是一种行为型设计模式,它定义了算法的骨架并将某些步骤延迟到子类中,使子类能在不改变算法结构的情况下重定义特定步骤。此模式适用于具有共同结构但细节不同的场景,如角色升级系统。通过定义一个抽象类 `Character` 包含模板方法 `levelUp` 和抽象步骤方法,子类如 `Warrior` 和 `Mage` 可以实现具体逻辑。这种方式提供了良好的扩展性,确保算法结构不变,同时保持系统的稳定性和一致性,在数据处理和业务流程管理中广泛应用。
54 2
|
4月前
|
设计模式 算法 Java
Java面试题:描述Java中的模板方法模式及其作用?如何在Java中实现模板方法模式?
Java面试题:描述Java中的模板方法模式及其作用?如何在Java中实现模板方法模式?
41 0
|
6月前
|
设计模式 算法 Java
Java 设计模式:深入模板方法模式的原理与应用
【4月更文挑战第27天】模板方法模式是一种行为设计模式,主要用于定义一个操作中的算法的框架,允许子类在不改变算法结构的情况下重定义算法的某些特定步骤。
59 1
|
6月前
|
设计模式 算法 Java
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式
|
6月前
|
设计模式 算法 Java
23种设计模式,模板方法模式的概念优缺点以及JAVA代码举例
【4月更文挑战第10天】模板方法模式是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。
62 0
|
6月前
|
设计模式 算法 Java
Java设计模式——模板方法模式
Java设计模式——模板方法模式
|
Java
Java 实现汉字按照首字母分组排序
Java 实现汉字按照首字母分组排序
708 0
|
设计模式 算法 Java
【设计模式——学习笔记】23种设计模式——模板方法模式Template Method(原理讲解+应用场景介绍+案例介绍+Java代码实现)
【设计模式——学习笔记】23种设计模式——模板方法模式Template Method(原理讲解+应用场景介绍+案例介绍+Java代码实现)
53 0
|
Java 数据安全/隐私保护
JAVA 实现上传图片添加水印(详细版)(上)
JAVA 实现上传图片添加水印(详细版)
1257 0
JAVA 实现上传图片添加水印(详细版)(上)