模板模式—咖啡与茶不得不说的故事

模板模式

关于模板模式

模板模式的定义:定义一个算法框架,将算法的一些步骤延迟到子类中,使子类可以不改变该算法的结构下重新定义某些特定步骤。他是一种类行为型模式。

优点:

  1. 封装不变部分,拓展可变部分
  2. 提取公共代码,便于维护
  3. 行为由父类控制,子类实现

缺点:每个不同的实现都需要一个子类来实现,导致类的个数增加,系统庞大。

核心:父类为抽象类,其中有方法定义了操作的执行步骤,子类实现父类的抽象方法。

注意事项:为防止恶意操作,模板模式方法都需加上final关键词

模板模式的类图

在这里插入图片描述

下面给出一个模板模式的实例应用
    关于咖啡和茶的冲泡方法,都需要进行四个步骤

  1. 将水烧开
  2. 将材料(茶或者咖啡)放入杯中
  3. 将开水倒入杯中
  4. 将泡好的茶(或者咖啡)端给客人

根据模板模式的类图给出上述实例类图在这里插入图片描述
其中给出了抽象类operator,operator类中有方法boilWater() 烧水,addCondiment() 加料,pourWater() 倒水,takeToGuest() 送饮料,以及规定方法step()规定执行顺序。根据实例描述,其中方法addCondiment()和takeToGuest()是抽象方法需要在子类tea和caffeine中实现。

下面给出实现的代码

Operator类

public abstract class Operator {	
	public void boilWater() {
        	System.out.print("将水烧开");
    	}
	
	public abstract void addCondiment();
	
	public void pourWater() {
    		 System.out.print("将水倒入杯中");
    	}

	public abstract void takeToGuest();
	
	public void step()
    	{
   	  	boilWater();
    	 	addCondiment();
     	  	pourWater();
     		takeToGuest();
     	}
    
}

Tea类

public class Tea extends Operator {	
	public void addCondiment()
    	{
     		System.out.println("将茶叶加入杯中");
    	}
	
	@Override
	public void takeToGuest() {
 	 System.out.println("将泡好的茶端给客人");
  
 	}
}

Caffeine类

public class Caffeine extends Operator {
	public void addCondiment()
    	{
     		System.out.println("将咖啡粉倒入杯中");
    	}

	@Override
 	public void takeToGuest() {
  		System.out.println("将泡好的咖啡端给客人");
  
 	}
}

test类

public class test {
	public static void main(String[] args) {
     	System.out.println("=======================");
     	Tea tea=new Tea();
        Caffeine caffeine=new Caffeine();
        System.out.println("泡茶的基本步骤:");
        tea.step();
        System.out.println("=======================");
        System.out.println("泡咖啡的基本步骤:");
        caffeine.step();
 	}
}

测试一下,给出测试结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值