package 模板模式; import java.util.Date; /** * * @author 紅塵Dream *模板模式 : *例子 : 公司員工 一天的描述 * */ public class Test { public static void main(String[] args) { Worker p = new PersonIT("小鵬"); p.workOneDay(); PersonHR h = new PersonHR("小紅"); h.workOneDay(); } } /** * HR員工 * */ class PersonHR extends Worker { public PersonHR(String name) { super(name); } //實現抽象方法 @Override public void work() { System.out.println(name+":招聘"); } } /* * IT員工 */ class PersonIT extends Worker { public PersonIT(String name) { super(name); } //實現抽象方法 @Override public void work() { System.out.println(name+":寫程序"); } } /** * 工做類 */ abstract class Worker { protected String name; public Worker(String name) { this.name = name; } /* * 一天的工做狀況 */ public final void workOneDay() { enterCompany(); computerOn(); work(); computerOff(); exitCompany(); } public void exitCompany() { System.out.print(new Date().toLocaleString()+"------"); System.out.println(name+":離開公司"); } public void computerOff() { System.out.println(name+":關閉電腦"); } public abstract void work(); //工做方法爲抽象方法 public void computerOn() { System.out.println(name+":打開電腦"); } public void enterCompany() { System.out.print(new Date().toLocaleString()+"-----"); System.out.println(name+":進入公司"); } }