设计模式之模板方法模式

        模板方法模式是定义一套标准的行为规范,比如每个人的周末日常,包括早晨、中午、晚上都有不同的活动,早晨赖床,中午自由活动找乐子,晚上睡觉,而中午自由活动每个人都有不同的兴趣喜好。这样同样是过了一天,每个人的具体行为模式是各有各的不同。将周末日常做成一个抽象类Weekend,早中晚时间为三个方法,晚上的时间都是睡觉,而早上和中午则各有各的安排,定义为抽象方法,强制让子类来实现。最后表现出来的则是都是过了同样的一天周末,而各自找了各自的乐子。

        模板方法具体分为两部分:

        抽象类:定义模板方法;

        具体类:实现自己的业务逻辑。

        根据上面的例子,完成模板方法模式的实例。

周末抽象类Weekend:

public abstract class Weekend {
	public void everyDay() {
		morning();
		entertainment();
		night();
	}
	
	public abstract void morning();
	public abstract void entertainment();
	public void night() {
		System.out.println("睡觉。");
	}
}
男孩的周末日常:

public class BoysWeekend extends Weekend {

	@Override
	public void morning() {
		System.out.println("赖床睡觉。");
	}
	
	@Override
	public void entertainment() {
		System.out.println("逛街看漂亮妹子、看片、玩游戏。");
	}

}
女孩的周末日常:

public class GirlsWeekend extends Weekend {

	@Override
	public void morning() {
		System.out.println("就是躺在床上不起来。");
	}

	@Override
	public void entertainment() {
		System.out.println("做头发、做面膜、美甲、看韩剧。");
	}

}
测试:

public class Main {

	public static void main(String[] args) {
		System.out.println("男孩的周末日常:");
		Weekend boysDaily = new BoysWeekend();
		boysDaily.everyDay();
		System.out.println("------------------------");
		System.out.println("女孩的周末日常:");
		Weekend girlsDaily = new GirlsWeekend();
		girlsDaily.everyDay();
	}

}
输出:

男孩的周末日常:

赖床睡觉。

逛街看漂亮妹子、看片、玩游戏。

睡觉。

------------------------

女孩的周末日常:

就是躺在床上不起来。

做头发、做面膜、美甲、看韩剧。

睡觉。


        总结:模板方法模式的优点在于:可以将共同的业务逻辑放在基类来实现,省去了很多重复的代码,并且不同的子类可以实现自己特有的业务规则。缺点在于对于不同的实现,都需要定义一个子类,使得这个设计比较抽象和凌乱。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值