领测软件测试网
Jla5~3c 其他具体的Door类型可以extends使用abstract class方式定义的Door或者implements使用interface方式定义的Door。看起来好像使用abstract class和interface没有大的区别。
#L
PB"TXb.?c软件测试技术网站
h'jT{s,G @ 如果现在要求Door还要具有报警的功能。我们该如何设计针对该例子的类结构呢(在本例中, 主要是为了展示 abstract class 和interface 反映在设计理念上的区别,其他方面无关的问题都做了简化或者忽略)?下面将罗列出可能的解 决方案,并从设计理念层面对这些不同的方案进行分析。
软件测试技术网站+z/fr"rlBy"g@1S7k软件测试技术网站iQ$b\
Z8Nuj/l 解决方案一:
软件测试技术网站d0t],un;o2\.X^.njFkk 简单的在Door的定义中增加一个alarm方法,如下:
软件测试技术网站.R;s7y'jE\-pr软件测试技术网站A+? q,|
F1a}8RY7M&Iabstract class Door{
)PH
f#pFU}
x2Vabstract void open();
软件测试技术网站!p \u\'Dvabstract void close();
软件测试技术网站/Cz]{*y%[abstract void alarm();
软件测试技术网站3d^ba+MNJ%rj}
+\o,u7w5d 或者
}_!N}H0zhR软件测试技术网站CUBDLMinterface Door{
W&Y-_[`
a]void open();
软件测试技术网站1Pz6Zw#CCTvoid close();
软件测试技术网站[X.U;`a