zoukankan      html  css  js  c++  java
  • 【设计模式】22、模板模式

     1 package com.shejimoshi.behavioral.TemplateMethod;
     2 
     3 
     4 /**
     5  * 功能:抽象模板类
     6  * 时间:2016年3月10日下午9:02:32
     7  * 作者:cutter_point
     8  */
     9 public abstract class AbstractTemplate
    10 {
    11     public abstract void operator1();
    12     
    13     public abstract void operator2();
    14     
    15     public void templateMethod()
    16     {
    17         operator1();
    18         operator2();
    19         System.out.println("流程操作结束");
    20     }
    21 }
     1 package com.shejimoshi.behavioral.TemplateMethod;
     2 
     3 
     4 /**
     5  * 功能:具体实现调用末班
     6  * 时间:2016年3月10日下午9:04:44
     7  * 作者:cutter_point
     8  */
     9 public class GetUp extends AbstractTemplate
    10 {
    11 
    12     @Override
    13     public void operator1()
    14     {
    15         System.out.println("闹钟响了");
    16     }
    17 
    18     @Override
    19     public void operator2()
    20     {
    21         System.out.println("穿衣服,准备起床");
    22     }
    23 
    24 }
     1 package com.shejimoshi.behavioral.TemplateMethod;
     2 
     3 
     4 /**
     5  * 功能:具体实现相应的操作2
     6  * 时间:2016年3月10日下午9:06:27
     7  * 作者:cutter_point
     8  */
     9 public class GoToBed extends AbstractTemplate
    10 {
    11 
    12     @Override
    13     public void operator1()
    14     {
    15         System.out.println("脱衣服,准备上床");
    16     }
    17 
    18     @Override
    19     public void operator2()
    20     {
    21         System.out.println("上床盖好被子,准备睡觉");
    22     }
    23 
    24 }
     1 package com.shejimoshi.behavioral.TemplateMethod;
     2 
     3 
     4 /**
     5  * 功能:定义一个操作中的算法的骨架,而将一些步骤延迟到子类。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
     6  * 适用:一次性实现一个算法的不变部分,并将可变的行为留给子类来实现
     7  *         各子类中的公共的行为应被提取出来并集中到一个公共父类中以避免代码重复
     8  *         控制子类的扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展
     9  * 时间:2016年3月10日下午8:46:51
    10  * 作者:cutter_point
    11  */
    12 public class Test
    13 {
    14     public static void main(String[] args)
    15     {
    16         AbstractTemplate at;
    17         
    18         at = new GetUp();
    19         at.templateMethod();
    20         
    21         System.out.println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
    22         
    23         at = new GoToBed();
    24         at.templateMethod();
    25     }
    26 }

    测试结果:

    闹钟响了
    穿衣服,准备起床
    流程操作结束
    $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    脱衣服,准备上床
    上床盖好被子,准备睡觉
    流程操作结束
    

      

  • 相关阅读:
    Codevs 2296 仪仗队 2008年省队选拔赛山东
    Codevs 1535 封锁阳光大学
    Codevs 1069 关押罪犯 2010年NOIP全国联赛提高组
    Codevs 1218 疫情控制 2012年NOIP全国联赛提高组
    Codevs 1684 垃圾陷阱
    洛谷 P1108 低价购买
    Vijos P1325桐桐的糖果计划
    Codevs 3289 花匠 2013年NOIP全国联赛提高组
    Codevs 2611 观光旅游(floyed最小环)
    C语言基础之彩色版C语言(内含linux)
  • 原文地址:https://www.cnblogs.com/cutter-point/p/5263492.html
Copyright © 2011-2022 走看看