• 模板方法模式


    顶层设计: 抽象类 【 汽车模型】

    package com.designer.designerdemo.template;
    
    /**
     * 基本方法 : start(), stop(), alarm(), engineBoom()
     * 模板方法 : run()
     */
    public abstract class AbstractCarModel {
    
        /** 启动 */
         protected abstract void start();
    
        /** 停止 */
        protected abstract void stop();
    
        /** 按喇叭 */
        protected abstract void alarm();
    
        /** 引擎发出声音 */
        protected abstract void engineBoom();
    
         /** 是否让喇叭响 */
        protected abstract boolean isAlarm();
    
        /**
         * 模板方法
         * 出发
         * final修饰避免子类修改它的含义
         */
        final public void run() {
            //1.启动
            this.start();
            //2.鸣笛
            if(this.isAlarm())
                this.alarm();
            //3.引擎轰鸣
            this.engineBoom();
            //4.停车
            this.stop();
        }
    
    }

    子类1:【奥迪汽车】

    package com.designer.designerdemo.template;
    
    public class AudiCarModel extends AbstractCarModel {
    
        @Override
        protected void start() {
            System.out.println("汽车2启动===");
        }
    
        @Override
        protected void stop() {
            System.out.println("汽车2停止===");
        }
    
        @Override
        protected void alarm() {
            System.out.println("汽车2鸣笛===");
        }
    
        @Override
        protected void engineBoom() {
            System.out.println("汽车2引擎轰鸣===");
        }
    
        @Override
        protected boolean isAlarm() {
            return true;
        }
    }

    测试

    package com.designer.designerdemo;
    
    import com.designer.designerdemo.template.AbstractCarModel;
    import com.designer.designerdemo.template.BwmCarModel;
    import com.designer.designerdemo.template.AudiCarModel;
    
    public class Test {
    
        public static void main(String[] args) {
            BwmCarModel car = new BwmCarModel();
            car.run();
        }
    }
     
  • 相关阅读:
    js:DOM及其操作2
    js:DOM及其操作
    闭包,作用域,作用域链
    面向对象
    关于typeof
    javascript正则表达式&关键词检索
    关于StringAPI
    mybatis Invalid bound statement (not found)
    全国区域数据
    redis 问题整理
  • 原文地址:https://www.cnblogs.com/smileblogs/p/15391535.html
Copyright © 2020-2023  润新知