• 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

  • 相关阅读:
    课堂练习-找水王绪
    输入法评估
    课堂练习-找水王
    课堂练习—电梯调度
    第一阶段冲刺总结
    《你的灯亮着吗》阅读笔记Ⅱ
    《你的灯亮着吗》阅读笔记Ⅰ
    软件工程——寻找水桶
    软件工程——寻找水王
    软件工程——典型用户
  • 原文地址:https://www.cnblogs.com/sunjf/p/java_template.html
Copyright © 2020-2023  润新知