行为型设计模式之模板方法模式

Posted 丨Jack_Chen丨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行为型设计模式之模板方法模式相关的知识,希望对你有一定的参考价值。

模板方法模式

应用场景

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

主要角色

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--->办理工牌,安排工位

以上是关于行为型设计模式之模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章

行为型模式-模板方法模式

六行为型模式---;01.概览和模板方法模式

设计模式——行为型模式之模板方法模式

行为型模式-模板方法模式

行为型模式之模板模式

行为型设计模式之模板方法模式