有界优先级队列继承与组合

时间:2013-10-16 17:56:27

标签: java oop

我想写一个Bounded Priority Queue类。这本质上是一个优先级队列,但是对队列中可以存在的元素数量有一定的限制。因此,如果我插入一个新元素并且队列已满,那么我会看到该元素是否大于队列的顶部。如果是,那么我丢弃新元素。如果不是,那么我删除顶部元素并插入这个新元素(并自动重新组织队列)。我目前已经实现了从PriorityQueue派生的BoundedPriorityQueue,它具有“maxCount”成员,我已经覆盖了add方法并添加了我上面描述的功能。我想知道我是否应该考虑使用组合方式而不是继承方式。我目前的方法似乎很简单。

如果我要去编写组合,那么我必须从AbstractQueue类派生,实现这些方法,然后用它组成优先级队列。

谢谢,

Venk

2 个答案:

答案 0 :(得分:1)

在我看来,最好使用构图。因为,继承这种方式违反了Liskov substitution principle。派生类型不应该替换基类型的功能。 此链接很有用:prefer composition over inheritance

答案 1 :(得分:0)

我会在描述的案例中继承继承 - 这是一个典型的例子。您可以(就像我在多个实现之间无法做出决定时那样)创建两个解决方案,尝试它们,看看它们看起来如何明智,性能,实现和理解,并基于此做出决定。