美文网首页程序员Java设计模式
设计模式-模板方法模式

设计模式-模板方法模式

作者: breezedancer | 来源:发表于2016-11-06 18:57 被阅读472次

    抽象类把部分业务逻辑用具体方法具体实现,或者构造方法里面实现,而把其他需要子类来完成的方法设置为抽象方法,迫使子类务必实现。每种子类都可以以不同的方式进行具体实现,这就是模板方法模式。

    先来看下 UML 的类图,比较简单

    这里的抽象类就是抽象模板类,定义一个或者多个抽象方法,迫使子类来完成。同时定义一个模板方法,该方法一般情况下是一个具体方法,给出模板方法的执行过程,里面调用抽象方法。

    具体的实现子类是把抽象类里面务必要实现的方法进行具体实现,成为父级模板方法里面的组成部分。

    看下具体代码:
    首先是抽象模板类

    public abstract class AbstractTemplate {
    
        //模板方法
        public void templete(){
            first();
            second();
            third();
        }
        
        //下面三个抽象方法需要子类来具体实现
        public abstract void first();
        
        public abstract void second();
        
        public abstract void third();
        
    }
    

    接下来看具体实现,这个具体类是把大象装进冰箱的步骤

    public class ConcreteTemplete extends AbstractTemplate{
    
        @Override
        public void first() {
            System.out.println("第一步开启冰箱");
        }
    
        @Override
        public void second() {
            System.out.println("第二步把大象塞进去");
        }
    
        @Override
        public void third() {
            System.out.println("第三步关闭冰箱");
        }
    
    }
    

    测试下

    public class Client {
        public static void main(String[] args) {
            AbstractTemplate template=new ConcreteTemplete();
            template.templete();
        }
    }
    

    几点经验:
    1、模板方法模式把复用代码集中到父类,子类可以直接调用;
    2、抽象的父类可以级联,进行有效的复用部分代码;
    3、一般和生命周期(生命周期一般会有几个阶段)有关的东西可以考虑该模式

    相关文章

      网友评论

        本文标题:设计模式-模板方法模式

        本文链接:https://www.haomeiwen.com/subject/warnuttx.html