• java模式:模板模式的简单理解


    1.模板模式就是用虚类作为基类将几个要执行差不多操作中相同的部分提取出来,不同的部分各自实现!

    2.下面给出简单栗子:

      我要进行的操作是将大象和狐狸放入冰箱,放入大象和狐狸有相同的步骤:开冰箱和关冰箱,这个操作在基类中实现就好,而不同的在于具体操作部分:

        一,大象太胖了,要测量并切片才能放入冰箱

        二,狐狸太臭了,要洗干净并擦干

    所以程序如下:

    1.基类:BasicFridgeOperation.java

    package com.learn.templateMode;
    
    /**
     * Created by garfield on 9/15/2016.
     */
    public abstract class BasicFridgeOperation {
    
        private void openFridge(){
            System.out.println("open the fridge door");
        }
    
    
        /**
         * different parts about one of the whole steps
         * the subclass will make different implements
         */
        protected abstract void operateFridge();
    
        private void closeFridge(){
            System.out.println("close the fridge door");
        }
    
        /**
         * the same operation steps
         */
        public void operation(){
            openFridge();
            operateFridge();
            closeFridge();
        }
    
    }

    2,放入大象类:OperateElephant.java

    package com.learn.templateMode;
    
    /**
     * Created by garfield on 9/15/2016.
     */
    public class OperateElephant extends BasicFridgeOperation {
        /**
         * same function but different implement
         */
        protected void operateFridge() {
            System.out.println("measure the elephant");
            System.out.println("slice up the elephant");
            System.out.println("put the elephant in");
        }
    
    }

    3,放入狐狸类:OperateFox.java

    package com.learn.templateMode;
    
    /**
     * Created by garfield on 9/15/2016.
     */
    public class OperateFox extends BasicFridgeOperation {
        /**
         * same function but different implement
         */
        protected void operateFridge() {
            System.out.println("clean up the fox");
            System.out.println("dry the fox");
            System.out.println("put the fox in");
        }
    }

    4,测试:OperationTest.java

    package com.learn.templateMode;
    
    /**
     * Created by garfield on 9/15/2016.
     */
    public class OperationTest {
        public static void main(String[] args) {
            System.out.println("====== begin to deal with the elephant=========");
            BasicFridgeOperation basicFridgeOperation = new OperateElephant();
            basicFridgeOperation.operation();
            System.out.println("====== begin to deal with the fox=========");
            BasicFridgeOperation basicFridgeOperation2 = new OperateFox();
            basicFridgeOperation2.operation();
        }
    }

    5,输出结果:

    ====== begin to deal with the elephant=========
    open the fridge door
    measure the elephant
    slice up the elephant
    put in the elephant
    close the fridge door
    ====== begin to deal with the fox=========
    open the fridge door
    clean up the fox
    dry the fox
    put in the fox
    close the fridge door

    ,that,s all.

  • 相关阅读:
    个人工作总结(2)
    个人工作总结(1)
    学习进度条
    学习进度条
    返回一个二维整数数组中最大联通子数组的和
    学习进度条
    构建之法阅读笔记02
    STM32F4寄存器初始化:PWM输出
    STM32F4跳转函数
    STM32F4寄存器串口DMA汇总
  • 原文地址:https://www.cnblogs.com/garfieldcgf/p/5874998.html
Copyright © 2020-2023  润新知