zoukankan      html  css  js  c++  java
  • 设计模式 — 模板模式

    实现形式:抽象类定义了执行的方法(方法包含若干步骤),具体的步骤由子类重写实现。

    使用场景: 

    • 有多个子类共同的步骤方法
    • 有重要的、复杂的共用方法

    代码实例:

      代码场景:需要定义一个吃饭的模板,不管男人还是女人都要按照指定模板步骤进行吃饭。步骤为拿碗、吃饭、洗碗。

    抽象模板类:AbstractEat

    /**
     * 吃饭 抽象类
     * @author GaoYuan
     * @date 2018/11/11 下午7:21
     */
    public abstract class AbstractEat {
    
        /** 定义了吃饭的步骤(模板) */
        public final void eat(){
            getBowl();
            startEat();
            washBowl();
        }
    
        /** 拿碗 */
        abstract void getBowl();
        /** 吃饭 */
        abstract void startEat();
        /** 洗碗 */
        abstract void washBowl();
    
    }

    具体实现子类 ManEat、WomanEat

    /**
     * 男人吃饭
     * @author GaoYuan
     * @date 2018/11/11 下午7:21
     */
    public class ManEat extends AbstractEat{
    
        @Override
        void getBowl() {
            System.out.println("ManEat getBowl()");
        }
    
        @Override
        void startEat() {
            System.out.println("ManEat startEat()");
        }
    
        @Override
        void washBowl() {
            System.out.println("ManEat washBowl()");
        }
    }
    /**
     * 女人吃饭
     * @author GaoYuan
     * @date 2018/11/11 下午7:21
     */
    public class WomanEat extends AbstractEat{
    
        @Override
        void getBowl() {
            System.out.println("WomanEat getBowl()");
        }
    
        @Override
        void startEat() {
            System.out.println("WomanEat startEat()");
        }
    
        @Override
        void washBowl() {
            System.out.println("WomanEat washBowl()");
        }
    }

    测试

    public static void main(String[] args){
        // 男人吃饭
        AbstractEat eat = new ManEat();
        eat.eat();
        // 女人吃饭
        eat = new WomanEat();
        eat.eat();
    }

    结果输出:

    ManEat getBowl()
    ManEat startEat()
    ManEat washBowl()
    WomanEat getBowl()
    WomanEat startEat()
    WomanEat washBowl()

    转自:https://www.liangzl.com/get-article-detail-29577.html

  • 相关阅读:
    学习一波cmd
    青春,就是用來懷念的
    菜鸟的 linux 学习笔记 -- OOM
    python 获取本机 IP
    win8防火墙配置出站规则禁止QQ访问
    netsh配置Windows防火墙(advfirewall)
    TCP/IP协议
    TCP的状态 (SYN, FIN, ACK, PSH, RST, URG)
    Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:80
    Photoshop  cs6 快捷键命令大全
  • 原文地址:https://www.cnblogs.com/myseries/p/10837349.html
Copyright © 2011-2022 走看看