Java模板模式

优点:

  • 封装不变部分,扩展可变优点
  • 提取公共部份代码,便于维护
  • 行为由父类控制,子类实现

缺点:

  • 子类执行结果影响了父类的结果

应用场景

  • 多个子类有公有的方法,并且逻辑基本相同时
  • 重要,复杂的算法,可以放到模板,周边相关的细节交给子类
  • 重构时,把相同的的模板提出到父类中,然后通过钩子函数约束其行为
/**
 * 模板
 * 
 * @author Administrator
 *
 */
public abstract class HumanMode {
	// 起床
	protected abstract void getUp();

	// 早饭
	protected abstract void breakFast();

	// 工作
	protected abstract void work();

	// 睡觉
	protected abstract void sleep();

	/**
	 * 一天的
	 */
	public final void lifeDay() {
		getUp();
		breakFast();
		work();
		sleep();

	}
   // 是否休假一天(钩子方法)
	protected boolean isWork(){
        return true;
    }

}
/**
 * 模板
 * 
 * @author Administrator
 *
 */
public class HumanModeIm extends HumanMode {

	@Override
	protected void getUp() {
		// TODO Auto-generated method stub
		System.out.println("小明--六点起床");

	}

	@Override
	protected void breakFast() {
		// TODO Auto-generated method stub
		System.out.println("小明--早饭");

	}

	@Override
	protected void work() {
		// TODO Auto-generated method stub
		System.out.println("小明--工作");
	}

	@Override
	protected void sleep() {
		// TODO Auto-generated method stub
		System.out.println("小明--睡觉");
	}

}
HumanMode human = new HumanModeIm();
human.lifeDay();

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值