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

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

    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();
        }
    }
     
  • 相关阅读:
    Currency Exchange
    Robot Motion
    Crashing Robots
    Parencodings
    Y2K Accounting Bug
    Tautology
    Power of Cryptography
    Radar Installation -poj 1328
    The Pilots Brothers' refrigerator
    【java】之cron表达式
  • 原文地址:https://www.cnblogs.com/smileblogs/p/15391535.html
Copyright © 2011-2022 走看看