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