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

    描述:

    在一个方法中定义一个算法的骨架。将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤。

    钩子:定义一个空的方法或者默认的方法,提供用户子类根据情况去覆盖实现自身的判断和功能。 通过钩子可以影响抽象类中的算法流程。在算法的某个地方是可选的就设置钩子。让子类有能力为其抽象类做一些决定。

    类图:

    以下程序模拟制作不同饮料的过程。

    1.定义有咖啡因的饮料抽象类

    package net.dp.templatemethod.barista;
    
    public abstract class CaffeineBeverage {
      
    	final void prepareRecipe() {
    		boilWater();
    		brew();
    		pourInCup();
    		addCondiments();
    	}
     
    	abstract void brew();
      
    	abstract void addCondiments();
     
    	void boilWater() {
    		System.out.println("Boiling water");
    	}
      
    	void pourInCup() {
    		System.out.println("Pouring into cup");
    	}
    }
    

      

    2.实现饮料抽象类

    package net.dp.templatemethod.barista;
    
    public class Tea extends CaffeineBeverage {
    	public void brew() {
    		System.out.println("Steeping the tea");
    	}
    	public void addCondiments() {
    		System.out.println("Adding Lemon");
    	}
    }
    

      

    package net.dp.templatemethod.barista;
    
    public class Coffee extends CaffeineBeverage {
    	public void brew() {
    		System.out.println("Dripping Coffee through filter");
    	}
    	public void addCondiments() {
    		System.out.println("Adding Sugar and Milk");
    	}
    }
    

      

    3.测试

    package net.dp.templatemethod.barista;
    
    public class BeverageTestDrive {
    	public static void main(String[] args) {
     
    		Tea tea = new Tea();
    		Coffee coffee = new Coffee();
     
    		System.out.println("
    Making tea...");
    		tea.prepareRecipe();
     
    		System.out.println("
    Making coffee...");
    		coffee.prepareRecipe();
    
    	}
    }
    

      

  • 相关阅读:
    GridView编辑删除操作
    hdu 4857 逃生 拓扑排序+PQ,剥层分析
    每日回顾Shell —cat,tail,head
    uva:10700
    Unity多玩家网络游戏开发教程1章Unity带有网络功能
    android com.handmark.pulltorefresh 使用技巧
    Jsoup 抓取和数据页 认识HTTP头
    JDK8在Java转让Javascript脚本引擎动态地定义和运行代码
    2013-2014约半学期的学习和规划研究综述
    Javascript 设计模式 辛格尔顿
  • 原文地址:https://www.cnblogs.com/lcqBlogs/p/4278264.html
Copyright © 2011-2022 走看看