美文网首页
模板方法模式的使用

模板方法模式的使用

作者: 文景大大 | 来源:发表于2022-06-23 17:49 被阅读0次

    一、模式介绍

    模板方法模式,顾名思义,就是在父类中提供一个模板方法,将某个业务流程的步骤进行固定,每个步骤的具体实现则可以交给子类自定义去实现。当然,如果所有子类都有的公共步骤可以提取到父类中实现。

    @Slf4j
    public abstract class AbstractHouse {
    
        /**
         * 将子类公共的步骤操作提取到父类中实现
         */
        void clean(){
            log.info("清理地基");
        }
    
        void dig(){
            log.info("深挖地基");
        }
    
        void fill(){
            log.info("填充水泥");
        }
    
        /**
         * 需要建造几层楼房交给子类去实现
         */
        abstract void build();
    
        /**
         * 定义模板方法,final防止被子类修改流程
         */
        final void buildHouse(){
            clean();
            dig();
            fill();
            build();
        }
    }
    
    @Slf4j
    public class Apartment extends AbstractHouse{
        @Override
        void build() {
            log.info("建造30层的公寓!");
        }
    }
    
    @Slf4j
    public class CountryHouse extends AbstractHouse{
        @Override
        void build() {
            log.info("建造3层的乡间楼房!");
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            AbstractHouse wanke = new Apartment();
            wanke.buildHouse();
    
            AbstractHouse biguiyuan = new CountryHouse();
            biguiyuan.buildHouse();
        }
    }
    

    二、使用案例

    • JDK中的AbstractList,其中的get(int index)就是一个抽象方法,其实现就交给子类来实现;
    • HttpServlet中的service()doGet()doPost()方法都是模板方法的抽象实现;

    三、模式总结

    3.1 优点

    • 可以将相同处理逻辑的代码放到抽象父类中,提高代码的复用性;
    • 将不同实现的逻辑分离到不同的子类中,通过对子类的扩展来增加新的行为,符合开闭原则;

    3.2 缺点

    • 如果父类需要增加新的抽象行为,所有子类都要修改一遍;

    相关文章

      网友评论

          本文标题:模板方法模式的使用

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