标签:res 步骤 模板方法 ctp int 钩子 new template 参考
package com.blankjor.templatemethod; /** * @desc 抽象的人类方法 * @author Blankjor * @date 2017年6月11日 下午10:09:18 */ public abstract class AbstractPerson { /** * 定义一个上班的方法 上班之前会进行一系列的操作 final 方法不允许改变都要上班 */ final void work() { // 起床 rise(); // 穿衣服 dress(); // 吃早饭 breakfast(); // 如果是女生还要化妆 if (isWoman()) { makeUp(); } } /** * 公共的都要做的事情 */ void rise() { System.out.println("起床"); } void dress() { System.out.println("穿衣服"); } void breakfast() { System.out.println("吃早饭"); } // 等着子类去实现 abstract void makeUp(); // 钩子函数 Boolean isWoman() { return true; } } package com.blankjor.templatemethod; /** * @desc * @author Blankjor * @date 2017年6月11日 下午10:17:44 */ public class Man extends AbstractPerson { @Override void makeUp() { // 不用化妆 } @Override Boolean isWoman() { return false; } } package com.blankjor.templatemethod; /** * @desc * @author Blankjor * @date 2017年6月11日 下午10:17:44 */ public class Woman extends AbstractPerson { @Override void makeUp() { System.out.println("化妆"); } @Override Boolean isWoman() { return true; } } package com.blankjor.templatemethod; /** * @desc 模版方法模式的测试方法 * @author Blankjor * @date 2017年6月11日 下午10:19:18 */ public class MainTest { public static void main(String[] args) { Man man = new Man(); Woman woman = new Woman(); System.out.println("男人上班"); man.work(); System.out.println("女人上班"); woman.work(); } }
运行结果:
标签:res 步骤 模板方法 ctp int 钩子 new template 参考
原文地址:http://www.cnblogs.com/KongkOngL/p/6986696.html