八、模板方法

在模板的基础上,只对某些特定的部分进行变动。

 将所有重复的代码都上升到父类上去,而不是让每个子类都重复。
 当我们要完成在某一细节层次一致的一个过程或一系列步骤,但其个别步骤在更详细的层次上的实现可能不同
时,我们通常考虑用模板方法来处理。 ————摘自《大话设计模式》

 笔者私下认为该模式较为简单,比较好理解,直接上代码:
 ①、模板类#########################################

/**
 *	考题类,模板 
 */
public abstract class Question {
	public void question1(){ //考题一,不同子类拿到的考题完全相同,只是答案部分有差异
		System.out.println("考题1——下面的几个小伙伴你认为最帅的是:a、小明\tb、Duke\tc、小刚\td、Duke");
		System.out.println("您的答案是:"+answer1());
	}
	
	protected abstract String answer1(); //考题一的答案,由子类给出具体实现
	
	public void question2(){ //考题二
		System.out.println("考题2——Duke的博文没有人评论的原因是:a、写的太烂\tb、读者太懒\tc、命\td、人品");
		System.out.println("您的答案是:"+answer2());
	}
	
	protected abstract String answer2(); //考题二的答案
}

 ②、子类#########################################
/**
 *	考生一,子类 
 */
public class Examinee1 extends Question {
	@Override
	public String answer1() { //第一题的解答
		return "a";
	}

	@Override
	public String answer2() { //第二题的解答
		return "c";
	}
}

/**
 *	考生二,子类 
 */
public class Examinee2 extends Question {
	@Override
	public String answer1() { //第一题的解答
		return "d";
	}

	@Override
	public String answer2() { //第二题的解答
		return "a";
	}
}

 测试类#########################################
public class Test {
	public static void main(String[] args) throws Exception {
		Question q1 = new Examinee1(); 
		Question q2 = new Examinee2();
		
		System.out.println("考生1的答案:");
		q1.question1();
		q1.question2();
		
		System.out.println("\n考生2的答案:");
		q2.question1();
		q2.question2();
	}
}


 运行结果:

Ps:两考生拿到的题目相同,解答不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值