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+":进入公司"); } }