文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java行为型设计模式之模板方法详解

2024-04-02 19:55

关注

模板方法模式

模板方法模式属于行为型设计模式。它是指定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

模板方法模式实际上是封装了一个固定流程,该流程由几个步骤组成,具体步骤可以由子类进行不同实现,从而让固定的流程产生不同的结果。

模板方法模式的本质是抽象封装流程,具体进行实现。

应用场景

当完成一个操作具有固定的流程时,由抽象固定流程步骤,具体步骤交给子类进行具体实现(固定的流程,不同的实现)。

1.实现一个算法的不变的部分(子类共有方法),将可变的行为留给子类来实现。

2.各子类中公共的行为被提取出来并集中到一个公共的父类中,以而避免代码重复。

比如:入职资料的填写,通常会有一系列的流程,只需要按照流程规则一步一步做即可。是目标方法模式的体现。

主要角色

1.抽象模板(AbstractClass)

抽象模板类,定义了一套算法框架/流程。

2.具体实现(ConcreteClass)

具体实现类,对算法框架/流程的某些步进行了实现。

优缺点

1.将相同处理逻辑代码放到抽象父类中,提高代码的复用性。

2.将不同代码放到不同子类中,通过对子类的扩展增加新的行为,提高代码的扩展性。

3.把不变的行为写在父类上,去除子类的重复代码,提供了一个很好的代码复用平台,符合开闭原则

缺点

1.类数目的增加,每个抽象类都需要一个子类来实现,这样导致类的个数增加。

2.类数量的增加,间接地增加了系统实现的复杂度。

3.继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍。

模板方法模式的基本使用

创建抽象模板角色

public abstract class AbstractClass {
    protected void step1() {
        System.out.println("AbstractClass:step1--->准备入职材料");
    }
    protected void step2() {
        System.out.println("AbstractClass:step2--->填写入职登记信息");
    }
    protected void step3() {
        System.out.println("AbstractClass:step3--->签订劳动合同");
    }
    protected void step4() {
        System.out.println("AbstractClass:step4--->办理工牌,安排工位");
    }
    public final void templateMehthod() {
        this.step1();
        this.step2();
        this.step3();
        this.step4();
    }
}

创建具体实现

public class ConcreteClassA extends AbstractClass {
    @Override
    protected void step1() {
        System.out.println("ConcreateClassA:step1--->普通员工 准备入职材料");
    }
}
public class ConcreteClassB extends AbstractClass {
    @Override
    protected void step1() {
        System.out.println("ConcreateClassA:step1--->关系户 准备入职材料");
    }
}

客户端调用

    public static void main(String[] args) {
        System.out.println("--------------普通人入职------------");
        AbstractClass abcA = new ConcreteClassA();
        abcA.templateMehthod();
        System.out.println("--------------关系户入职------------");
        AbstractClass  abcB = new ConcreteClassB();
        abcB.step3();
        abcB.step4();
    }

--------------普通人入职------------
ConcreateClassA:step1--->普通员工 准备入职材料
AbstractClass:step2--->填写入职登记信息
AbstractClass:step3--->签订劳动合同
AbstractClass:step4--->办理工牌,安排工位
--------------关系户入职------------
ConcreateClassA:step1--->关系户 准备入职材料
AbstractClass:step2--->填写入职登记信息
AbstractClass:step3--->签订劳动合同
AbstractClass:step4--->办理工牌,安排工位

到此这篇关于Java行为型设计模式之模板方法详解的文章就介绍到这了,更多相关Java模板方法内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯