AbstractDay:
package com.bugyun.designpattern.templatemethod; /** * 项目名称: * 模板方法: * 使用了JAVA的继承机制,在抽象类中定义一个模板方法, * 该方法引用了若干个抽象方法(由子类实现)或具体方法(子类可以覆盖重写); * * 类名称:EveryDay.java * 类描述: * 创建人:beyond * 创建时间:2017年5月23日 下午2:43:41 * 修改人: * 修改时间: * 修改备注: * @version */ public abstract class AbstractDay { public void getUp() { System.out.println("起床了..."); } public abstract void goToWork(); public abstract void goHome(); public void sleep() { System.out.println("睡觉了..."); } /** * 一般模板方法定义成final避免被子类修改 * @author beyond * @data:2017年5月23日下午2:43:06 */ public final void process() { getUp(); goToWork(); goHome(); sleep(); } }
ProgrammerDay:
package com.bugyun.designpattern.templatemethod; public class ProgrammerDay extends AbstractDay{ @Override public void goToWork() { System.out.println(" 程序员,去上班啦 ..."); } @Override public void goHome() { System.out.println(" 程序员,下班啦 ..."); } }
Test:
package com.bugyun.designpattern.templatemethod; public class Test { public static void main(String[] args) { AbstractDay programmerDay = new ProgrammerDay(); programmerDay.process(); } }