zoukankan      html  css  js  c++  java
  • 【GOF23设计模式】模板方法模式

    来源:http://www.bjsxt.com/ 
    一、【GOF23设计模式】_模板方法模式、钩子函数、方法回调、好莱坞原则

    场景

    模板方法模式介绍

    案例代码

     1 package com.test.templateMethod;
     2 
     3 public abstract class BankTemplateMethod {
     4     //具体方法
     5     public void takeNumber(){
     6         System.out.println("取号排队");
     7     }
     8 
     9     public abstract void transact();//办理具体的业务   //钩子方法
    10 
    11     public void evaluate(){
    12         System.out.println("反馈评分");
    13     }
    14 
    15     /**
    16      * 模板方法,把基本操作组合到一起,子类一般不能重写
    17      */
    18     public final void process(){
    19         this.takeNumber();
    20 
    21         this.transact();//像个钩子。执行时,挂哪个子类的方法就调用哪个
    22 
    23         this.evaluate();
    24     }
    25 }
     1 package com.test.templateMethod;
     2 
     3 public class Client {
     4     public static void main(String[] args) {
     5         BankTemplateMethod btm = new DrawMoney();
     6         btm.process();
     7 
     8         //采用匿名内部类
     9         BankTemplateMethod btm2 = new BankTemplateMethod() {
    10 
    11             @Override
    12             public void transact() {
    13                 System.out.println("我要存钱!!!!");
    14             }
    15         };
    16         btm2.process();
    17 
    18         BankTemplateMethod btm3 = new BankTemplateMethod() {
    19 
    20             @Override
    21             public void transact() {
    22                 System.out.println("我要理财!!!!!!!!");
    23             }
    24         };
    25         btm3.process();
    26     }
    27 }
    28 
    29 class DrawMoney extends BankTemplateMethod {
    30 
    31     @Override
    32     public void transact() {
    33         System.out.println("我要取款!!!");
    34     }
    35 
    36 }
    控制台输出:
    取号排队
    我要取款!!!
    反馈评分
    取号排队
    我要存钱!!!!
    反馈评分
    取号排队
    我要理财!!!!!!!!
    反馈评分

    方法回调

    什么时候

  • 相关阅读:
    自动化运维工具Ansible实战Playbooks剧本使用
    Mysql5.6.x版本半同步主从复制的开启方法
    mysql数据库的一些基本概念
    mysql之视图
    mysql之索引
    机器学习笔记09-----决策树与随机森林1---决策树概述
    机器学习笔记08-----回归2
    Anaconda 利用conda安装第3方包
    机器学习笔记07-----回归1
    使用navicat导出数据库字典
  • 原文地址:https://www.cnblogs.com/erbing/p/5802655.html
Copyright © 2011-2022 走看看