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

    1.模板方法是定义系列的方法,包含一部分公共的方法和一部分特殊的方法还有一个总的模板方法去串联这些方法,使他成为完成一件事的完整步骤。特殊的方法可以在子类中去定制属于子类本身的实现。

    2.下面的例子是以日常工作为例,平时工作分为四个步骤,第一步上班签到,第二步执行具体工作内容,第三步发送工作日报,第四步下班签退。对于公司所有员工来说,签到,发送日报,签退是每个员工都要做的固定内容,而具体的工作内容却是不同的。软件工程师需要编码,测试工程师需要执行用例,产品经理需要写需求文档。

    3.

    package com.java.dp.template;
    
    /**
     * @Author lizhilong
     * @create 2019/12/5 14:09
     * @desc 定义抽象类,规定事件执行的具体步骤
     */
    public abstract  class Work {
    
        /**
         * 模板方法,定义统一的模式,不允许子类去修改
         */
        final void workDay(){
            Signin();
            doWork();
            sendReport();
            Signout();
        }
    
        public void Signin(){
            System.out.println("早上统一签到");
        }
    
        public abstract void  doWork();
    
        public void sendReport(){
            System.out.println("发送当天工作日报");
        }
    
        public void  Signout(){
            System.out.println("下班统一签退");
        }
    }
    package com.java.dp.template;
    
    /**
     * @Author lizhilong
     * @create 2019/12/5 14:18
     * @desc 软件工程师的实现
     */
    public class SoftwareEngineer extends Work{
        @Override
        public void doWork() {
            System.out.println("编写代码,实现需求");
        }
    }
    package com.java.dp.template;
    
    /**
     * @Author lizhilong
     * @create 2019/12/5 14:20
     * @desc 产品经理的实现
     */
    public class ProductEngineer extends Work {
        @Override
        public void doWork() {
            System.out.println("分析需求,编写文档");
        }
    }
    package com.java.dp.template;
    
    /**
     * @Author lizhilong
     * @create 2019/12/5 14:19
     * @desc 测试工程师的实现
     */
    public class TestEngineer extends Work{
        @Override
        public void doWork() {
            System.out.println("执行用例,发现漏洞");
        }
    }
    package com.java.dp.template;
    
    /**
     * @Author lizhilong
     * @create 2019/12/5 14:20
     * @desc
     */
    public class TemaplateMain {
    
        public static void main(String[] args) {
            Work softEngineer = new SoftwareEngineer();
            softEngineer.workDay();
    
            System.out.println("----------------------------------------------");
            System.out.println("
    ");
    
            Work testEngineer = new TestEngineer();
            testEngineer.workDay();
    
            System.out.println("----------------------------------------------");
            System.out.println("
    ");
            Work productEngineer = new ProductEngineer();
            productEngineer.workDay();
        }
    }
    早上统一签到
    编写代码,实现需求
    发送当天工作日报
    下班统一签退
    ----------------------------------------------
    
    
    早上统一签到
    执行用例,发现漏洞
    发送当天工作日报
    下班统一签退
    ----------------------------------------------
    
    
    早上统一签到
    分析需求,编写文档
    发送当天工作日报
    下班统一签退
  • 相关阅读:
    面向对象---工厂模式
    [转]Caffe 安装配置(CentOS + 无GPU)
    [转]Centos6.5+CUDA6.5+caffe安装配置及可能遇到问题解答
    [转]Caffe安装过程记录(CentOS,无独立显卡,无GPU)
    [转]LIBRARY_PATH和LD_LIBRARY_PATH环境变量的区别
    [转]centos 6.5安装caffe
    [转]CentOS编译安装GIMP
    [转]Snappy压缩库安装和使用之一
    [转]拍照怎么搜题?(下)
    [转]拍照怎么搜题?(上)
  • 原文地址:https://www.cnblogs.com/li-zhi-long/p/11989526.html
Copyright © 2011-2022 走看看