Collection框架设计的失误:Stack!

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Stack是Java中Collection设计的重大失误,这个类绝对是垃圾,设计Stack这个类的人

当时一定是脑子发热了。众所周知,Stack实现的数据结构中的栈的功能,也就是后进先出,

看看Stack的声明吧:

public class Stack extends Vector

Vector就已经不是什么好东西了,这里还继承它?这里列出Stack中的方法,不考虑它的实现,

因为如果你要用这个东西,那我也无法可说。

public Object push(Object item)

public synchronized Object pop()

public synchronized Object peek()

public synchronized int search(Object o)

public boolean empty()

你可能会觉得这些方法没什么,可是当它继承了Vector,就意味着它没有价值了,不过这个类的

实现确实比较简单,有兴趣可以看看源码。我们知道Vector是实现了List接口的,Stack继承

Vector自然也实现了List接口。而事实上Stack不是List,甚至连Collection都不是。设计者是不是

为了节省代码呀才这样设计的呀,但是我们设计应该使接口最小化。如果这样也可以的话,

干脆Collection框架就用一个类实现好了!

Stack就应该只有上面几个方法,不应该有其他方法,而现有的设计可以把Stack当作Vector来用。

List stack = new Stack();

你看到这样的代码不会觉得很别扭吗?我强烈建议不要使用Stack!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航