java 模板模式

本文介绍了一个使用Java实现的模板模式示例,通过定义一个工作流程的骨架,将具体的工作细节留给子类实现。展示了IT员工和HR员工一天工作的具体流程。
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+":进入公司");
    }
    
}

 

转载于:https://www.cnblogs.com/pbq-dream/p/5413323.html

模板模式是一种行为设计模式,它定义了一个操作中的算法的骨架,将一些步骤延迟到子类中。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。在Java中,模板模式通常由一个抽象类和一个或多个实现类组成。抽象类中定义了一个模板方法,该方法包含了算法的骨架,以及一些抽象方法,这些抽象方法由子类实现,以完成算法中的具体步骤。 以下是Java模板模式的一个示例: ```java // 抽象类 abstract class Game { abstract void initialize(); abstract void startPlay(); abstract void endPlay(); // 模板方法 public final void play(){ // 初始化游戏 initialize(); // 开始游戏 startPlay(); // 结束游戏 endPlay(); } } // 实现类1 class Cricket extends Game { @Override void endPlay() { System.out.println("Cricket Game Finished!"); } @Override void initialize() { System.out.println("Cricket Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Cricket Game Started. Enjoy the game!"); } } // 实现类2 class Football extends Game { @Override void endPlay() { System.out.println("Football Game Finished!"); } @Override void initialize() { System.out.println("Football Game Initialized! Start playing."); } @Override void startPlay() { System.out.println("Football Game Started. Enjoy the game!"); } } // 演示类 public class TemplatePatternDemo { public static void main(String[] args) { Game game = new Cricket(); game.play(); System.out.println(); game = new Football(); game.play(); } } ``` 输出结果为: ``` Cricket Game Initialized! Start playing. Cricket Game Started. Enjoy the game! Cricket Game Finished! Football Game Initialized! Start playing. Football Game Started. Enjoy the game! Football Game Finished! ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值