• 软件测试技术
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘

字号: | 推荐给好友 上一篇 | 下一篇

为什么在Java编程中的继承多数是有害的 (2)

发布: 2008-5-06 11:21 | 作者: 不详 | 来源: 赛迪网技术社区 | 查看: 9次 | 进入软件测试论坛讨论

领测软件测试网

a0YQ Pg^脆弱的基类问题  软件测试技术门户X.X z%S qq
软件测试技术门户6}\kN)^`b }
现在,让我们应用耦合的概念到继承。在一个用extends的继承实现系统中,派生类是非常紧密的和基类耦合,当且这种紧密的连接是不期望的。设计者已经应用了绰号“脆弱的基类问题”去描述这个行为。基础类被认为是脆弱的是,因为你在看起来安全的情况下修改基类,但是当从派生类继承时,新的行为也许引起派生类出现功能紊乱。你不能通过简单的在隔离下检查基类的方法来分辨基类的变化是安全的;而是你也必须看(和测试)所有派生类。而且,你必须检查所有的代码,它们也用在基类和派生类对象中,因为这个代码也许被新的行为所打破。一个对于基础类的简单变化可能导致整个程序不可操作。 
] uI@'~g(i软件测试技术门户 k8X+yb4L"c
让我们一起检查脆弱的基类和基类耦合的问题。下面的类extends了Java的ArrayList类去使它像一个stack来运转:  软件测试技术门户 { }@aGX"YV
软件测试技术门户q&HL UC9G6cX
软件测试技术门户!h$dm ZTwx Nzc
 class Stack extends ArrayList  软件测试技术门户bq4W+RR+D uI3bI
  { 
WE#x8V c q5g3j4o\]  private int stack_pointer = 0; 
+Nop9Q!F)CU软件测试技术门户U;uIg[3G l f I
  public void push( Object article )  软件测试技术门户)m%`xl'X]7C
  { 
jrF ?yad xb5X'|l6^  add( stack_pointer++, article );  软件测试技术门户vPp3fTt X:K{ |3J
  }  软件测试技术门户7wPB$oiP;pk:gO

z@/@EH  public Object pop() 
8~]x4e7k8o_q  {  软件测试技术门户 Wf WnM w,c A)c
  return remove( --stack_pointer );  软件测试技术门户@XDt r @-u$f
  }  软件测试技术门户!q0kV$e5b'JM$V

8w!{@!M