zoukankan      html  css  js  c++  java
  • 模板模式

    • 模板模式

    关心的是流程
    执行流程固定,但中间有些步骤有细微差别

    如:SpringJDBC

        是java规范,各个数据库厂商自己去实现
        1、加载驱动类DriverManager
        2、建立连接
        3、创建语句集(标准语句集、预处理语句集)(语句集?  MySQL、Oracle、SQLServer、Access)
        4、执行语句集
        5、结果集ResultSet 游标
        ORM(?)
    
    
    public abstract class Packing {
        protected final void start(){
            this.open();
            if (needBlock()){
                this.block();
            }
            this.push();
            this.close();
        }
        abstract void block();
    
        //钩子方法:实现流程的微调
        protected boolean needBlock(){
            return false;
        }
    
        final void close(){
            System.out.println("关闭冰箱");
        }
    
        protected abstract void push();
    
        final void open(){
            System.out.println("打开冰箱");
        }
    }
    
    
    public class Elephant extends Packing {
        private boolean needBlock = false;
    
        public Elephant(boolean needBlock) {
            this.needBlock = needBlock;
        }
    
        @Override
        void block() {
            System.out.println("将大象分块");
        }
    
        @Override
        protected void push() {
            System.out.println("放入冰箱");
        }
    
        @Override
        protected boolean needBlock() {
            return this.needBlock;
        }
    }
    
    
    public class Pig extends Packing {
        @Override
        void block() {
            System.out.println("将猪分块");
        }
    
        @Override
        protected void push() {
            System.out.println("放入冰箱");
        }
    }
    
    
    public class Test {
        public static void main(String[] args){
            Packing elephant = new Elephant(true);
            elephant.start();
            Packing pig = new Pig();
            pig.start();
        }
    }
    

    模板模式的优缺点

    • 优点:
    1. 利用模板方法将相同处理逻辑的代码放到抽象父类中,可以提高代码的复用性。
    2. 将不同的代码不同的子类中,通过对子类的扩展增加新的行为,提高代码的扩展性。
    3. 把不变的行为写在父类上,去除子类的重复代码,提供了一个很好的代码复用平台, 符合开闭原则。
    • 缺点:
    1. 类数目的增加,每一个抽象类都需要一个子类来实现,这样导致类的个数增加。
    2. 类数量的增加,间接地增加了系统实现的复杂度。
    3. 继承关系自身缺点,如果父类添加新的抽象方法,所有子类都要改一遍
  • 相关阅读:
    2013第47周日整理
    2013第47周六笔记本散热及相关问题思考
    myeclipse中控制台日志比实际晚8小时解决方法及java日志处理
    2013第47周五抱怨负能量
    ORM框架
    什么是IT
    内网port映射具体解释(花生壳)
    DrawText的使用
    socket编程原理
    hibernate学习——Set集合配置
  • 原文地址:https://www.cnblogs.com/fly-book/p/10371732.html
Copyright © 2011-2022 走看看