行为型设计模式之模板方法模式
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--->办理工牌,安排工位
以上是关于行为型设计模式之模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章