该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
现在,需要升级ACCP教员类,增加一种新类型:ACCPDBTeacher,该类型的教员专门负责教授数据库,
具有属性“姓名”、“所属中心”;具有方法“授课”(授课步骤依次是:打开SQL Server、知识点
讲解、总结提问)以及“自我介绍”。同时,总部也负责对这类教员进行评估。
【例4】
****************************************
HQ2类
****************************************
01 package s2Java.sg.ch02;
02 public class HQ2 {
03 /*
04 * 对Java教员进行评估,评估内容:自我介绍、授课
05 */
06 public void judge(AccpJavaTeacher2 teacher) {
07 teacher.introduction();
08 teacher.giveLesson();
09 }
10
11 /*
12 * 对.Net教员进行评估,评估内容:自我介绍、授课
13 */
14 public void judge(AccpDotNetTeacher2 teacher) {
15 teacher.introduction();
16 teacher.giveLesson();
17 }
18
19 /*
20 * 对数据库教员进行评估,评估内容:自我介绍、授课
21 */
22 public void judge(AccpDBTeacher teacher) {
23 teacher.introduction();
24 teacher.giveLesson();
25 }
26
27 /*
28 * 使用main方法进行单元测试
29 */
30 public static void main(String[] args) {
31 HQ2 hq = new HQ2();
32 AccpJavaTeacher2 jt = new AccpJavaTeacher2("李明","北京中心");
33 hq.judge(jt);
34 System.out.println();
35 AccpDotNetTeacher2 nt = new AccpDotNetTeacher2("张明","天津中心");
36 hq.judge(nt);
37 System.out.println();
38 AccpDBTeacher dt = new AccpDBTeacher("李岚","北京中心");
39 hq.judge(dt);
40 }
41 }
运行结果:
大家好!我是北京中心的李明。
启动 Eclipse
知识点讲解
总结提问
大家好!我是天津中心的张明。
启动 Eclipse
知识点讲解
总结提问
大家好!我是北京中心的李岚。
启动Sql Server
知识点讲解
总结提问
【分析】
从输出结果看,这样做行得通,但是存在一定的弊端。每增加一种新的教员类型,都要修改HQ2类,
增加相应的judge()方法。代码的可维护性和可拓展新极差!
下面这样编码就很好,使用的多态,代码变得很简洁,并且可拓展性和可维护性增强了。
【例5】
****************************************
HQ3类
****************************************
01 package s2Java.sg.ch02;
02 public class HQ3 {
03 /*
04 * 对教员进行评估,评估内容:自我介绍、授课
05 */
06 public void judge(AccpTeacher teacher) {
07 teacher.introduction();
08 teacher.giveLesson();
09 }
10
11 /*
12 * 使用main方法进行单元测试
13 */
14 public static void main(String[] args) {
15 HQ3 hq = new HQ3();
16 hq.judge(new AccpJavaTeacher2("李明","北京中心"));
17 System.out.println();
18 hq.judge(new AccpDotNetTeacher2("张明","天津中心"));
19 System.out.println();
20 hq.judge(new AccpDBTeacher("李岚","北京中心"));
21 }
22 }
运行结果:
大家好!我是北京中心的李明。
启动 Eclipse
知识点讲解
总结提问
大家好!我是天津中心的张明。
启动 Eclipse
知识点讲解
总结提问
大家好!我是北京中心的李岚。
启动Sql Server
知识点讲解
总结提问
【分析】
代码第6行,传父类的对象。
代码16、18、20行,同一个实现接口,使用不同的实例而执行不同的操作。