java 模板模式

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

 

posted @ 2016-04-20 16:35  红尘Dream  阅读(184)  评论(0编辑  收藏  举报