• java设计模式(三)模板模式


      抽象类中公开定义了执行它的方法的方式,子类可以按需求重写方法实现,但调用将以抽象类中定义的方式进行,典型应用如银行办理业务流程、冲泡饮料流程。下面给出简单例子,用沸水冲泡饮料,分为四步:将水煮沸、泡制饮料、将饮料倒入杯中、加入调味料。

    1、模板抽象类

      要点:1)抽象类  2)final修饰的模板方法

    public abstract class RefreshTemplate {
    
        public final void refresh() {
            //将水煮沸
            biolWater();
            //炮制饮料
            brew();
            //将饮料倒入杯中
            pourInCup();
            //加入调味料
            addCondiments();
    
        }
    
        private void biolWater() {
            System.out.println("将水煮沸");
        }
    
        protected abstract void brew();
    
        private void pourInCup() {
            System.out.println("将饮料倒入杯中");
        }
    
        protected abstract void addCondiments();
    
    }

    2、咖啡类,继承模板类,重写冲泡、加调味料方法

    public class Coffee extends RefreshTemplate {
        protected void brew() {
            System.out.println("用沸水冲泡咖啡");
        }
    
        protected void addCondiments() {
            System.out.println("向咖啡中加入牛奶和糖");
        }
    }

    3、茶类,继承模板类,重写冲泡、加调味料方法

    public class Tea extends RefreshTemplate {
        protected void brew() {
            System.out.println("用开水浸泡5分钟");
        }
    
        protected void addCondiments() {
            System.out.println("加入柠檬");
        }
    }

    4、测试

    public class Model {
    
        public static void main(String[] args) {
            //RefreshTemplate refresh = new Coffee();
            RefreshTemplate refresh = new Tea();
            refresh.refresh();
        }
    
    }

    利用Java的动态绑定(向上转型),调用父类的final模板方法,保证执行按抽象类定义的方式进行。

    代码:https://github.com/shaoyesun/jdk_test.git

  • 相关阅读:
    hive -- 协同过滤sql语句
    Hive
    hive的排序,分組练习
    Hive 外部表的练习(多表关联查询,以及分组,子查询)
    javascript高级程序编程-学习笔记(基础)
    nodejs-基础与深入
    4.npm模块安装和使用(axios异步请求,lodash工具库)
    node-xlsx
    Git在tortoiseGit以及eclipse的使用方法
    稻盛和夫----六项精进
  • 原文地址:https://www.cnblogs.com/sunjf/p/java_template.html
Copyright © 2020-2023  润新知