菜鸟程序猿之模版模式DEMO

模版类 

package cn.yanxiaohui.service.web.test.template;

/**
 * 模版模式
 * 	旅游的三要素:
 * 		吃
 * 		玩
 * 		休息
 * @author yanxh
 *
 */
public abstract class Tourism {
	
	public final void comeOn() {
		System.out.println("买车票出发~~~");
		eat();
		play();
		sleep();
		System.out.println("旅游结束~~~");
	}
	
	public abstract void eat();
	
	public abstract void play();
	
	public abstract void sleep();
	
}

具体实现类

package cn.yanxiaohui.service.web.test.template;

/**
 * 去大连旅游
 * @author yanxh
 *
 */
public class DaLian extends Tourism{

	@Override
	public void eat() {
		System.out.println("吃大连的特色小吃");
	}

	@Override
	public void play() {
		System.out.println("去大连看看海");
	}

	@Override
	public void sleep() {
		System.out.println("和女朋友一起共度良宵");
	}

}
package cn.yanxiaohui.service.web.test.template;

/**
 * 去北京旅游
 * @author yanxh
 *
 */
public class BeiJing extends Tourism{

	@Override
	public void eat() {
		System.out.println("北京烤鸭走起");
	}

	@Override
	public void play() {
		System.out.println("不到长城非好汉!");
	}

	@Override
	public void sleep() {
		System.out.println("嘿嘿嘿,你懂的");
	}

}

测试类 

package cn.yanxiaohui.service.web.test.template;

public class Test {
	public static void main(String[] args) {
		Tourism beiJing = new BeiJing();
		beiJing.comeOn();
		System.out.println("===========================");
		Tourism daLian = new DaLian();
		daLian.comeOn();
	}
}

结果 

 描述

首先在父类中定义模板方法的执行流程
将不固定的行为抽取为抽象方法--将来子类根据自己的需求重新编写这个行为
将模版方法设置为final不允许子类重写,否则无意义

猜你喜欢

转载自blog.csdn.net/yxh13521338301/article/details/88740105
今日推荐