java 模板方法模式如何封装库_Java 模板方法模式的实现

Java 模板方法模式的实现

1.定义:

定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使子类可以不改变一个算法的结构。可以重新定义该算法的某些特定步骤。

2.使用场景:

(1).多个子类有公有的方法,并且逻辑基本相同。

(2).重要、复杂的算法,可以把核心算法设计为模板方法,周边相关的细节则在子类中实现。

(3).重构时,模板方法模式是一个经常使用的模式,把相同的代码抽到父类中,然后通过钩子方法函数约束其行为。

3.UML类图

b54ab4d37aeb0811c99a07047ec0d5ec.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值