Collection框架设计的失误:Stack!

类别:Java 点击:0 评论:0 推荐:

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!

本文地址:http://com.8s8s.com/it/it15377.htm