深入浅出学习设计模式之模板方法模式《四》

模板方法模式  定义一个操作中的算法骨架,而将一些步骤延迟到子类中国,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定的步骤

模板方法模式UML图

1.创建汽车模型抽象类CarModel

/**
 * 汽车模型
 * @author Administrator
 *
 */
public abstract class CarModel {

	/**
	 * 启动
	 */
	public abstract void start();
	/**
	 * 停止
	 */
	public abstract void stop();
	/**
	 * 用户不关心怎么启动和停止,只需知道可以开和停就可以
	 */
	public void excet(){
		this.start();
		this.stop();
	}
}

2.创建汽车子类

public class BwmCar extends CarModel {

	@Override
	public void start() {
		System.out.println("宝马一键启动。。。突突突");
	}

	@Override
	public void stop() {
		System.out.println("宝马停止");
	}

}
public class OCar extends CarModel {

	@Override
	public void start() {

		System.out.println("奥迪钥匙启动  。。。。突突突");
	}

	@Override
	public void stop() {
		System.out.println("奥迪拔钥匙停车");
	}

}

3.Client测试

/**
 * 客户端
 * @author Administrator
 *
 */
public class Client {

	public static void main(String[] args) {
		//用户不需要知道怎么开和停,只需要知道能启动和停止
		CarModel cm = new BwmCar();
		cm.excet();
		
		CarModel oooo = new OCar();
		oooo.excet();
	}
}

模板方法模式的特点

通过把不变的行为搬到超类,去除子类中的重复代码来体现它的优势,提供了一个很好的代码复用平台

 

应用场景

 当不变的和可变的行为在方法的子类实现中混合在一起的时候,不变的行为就会在子类中重复出现,我们可以通过模板方法模式把这些行为搬移到单一的地方,这样就能帮助子类摆脱重复的不变行为的纠缠

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值