模板方法设计模式

在模板模式中,抽象类公开定义了执行它的方式/模板,然后在其子类中进行具体的实现。‘

可以理解为 抽象类定义了一套做事情的规则,而具体的类去实现这套规则中的具体步骤。

关键代码在抽象类当中进行实现,而具体的代码则在具体的类中再实现。


应用案例:

说,要把大象装冰箱,需要分为三个步骤。

第一:把冰箱门打开  第二:把大象装进去 第三:关上冰箱门


首先定义一个抽象类来定义这个规则,代码如下:

AbstractModel.java

package com.zwz.test6;

public abstract class AbstractModel {
	public abstract void openDoor();  //打开门的规则
	//关闭门规则
	public abstract void closeDoor();
	//把东西放进去的规则
	public abstract void putTheAnimalIn();
	
	//把大象装进冰箱的方法,整体步骤定义好
	public final void putAnimalToRefrigerator(){
		
		openDoor();
		
		
		putTheAnimalIn();
		
		
		closeDoor();
		
	}
	
}

一个具体的类去实现这些个操作

public class MyModel extends AbstractModel {

	private String name;
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	
	public MyModel(String name) {
		super();
		this.name = name;
	}

	@Override
	public void openDoor() {
		// TODO Auto-generated method stub
		System.out.println("打开冰箱门");
	}

	@Override
	public void closeDoor() {
		// TODO Auto-generated method stub
		System.out.println("关上冰箱门");
	}

	@Override
	public void putTheAnimalIn() {
		// TODO Auto-generated method stub
		System.out.println("把" + name +"放到冰箱当中!!");
	}

}


定义一个方法进行测试:

public class TestModel {

	public static void main(String[] args) {
		
		AbstractModel model = new MyModel("大象");
		
		model.putAnimalToRefrigerator();
		
	}
	
}

测试结果:




这里值得注意的地方是,为了防止 AbstractModel  中的   putAnimalToRefrigerator   方法被子类重写而破坏规则,所以在这里,这个方法上加上了final  进行方法的修饰。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值