我正在做一个简单的程序,维护一个数字列表,我希望这个列表也有一个名字。最好的办法是让我的列表类扩展ArrayList或让它包含一个ArrayList成员?在这两种情况下,当然都会有一个“名称”字符串成员。我应该扩展ArrayList(is-a)还是应该将其作为成员(has-a)包含?
第一种方法意味着我只需要为该名称实现一个getter & setter,但是我认为这会将我的类与特定实现紧密联系在一起?例如,如果我想稍后使用Vector,则无需在任何地方更改代码。
第二种方法可以更容易地更改实现,但现在变得非常烦人,因为我必须实现一堆包装。
我读过关于继承与组合的SO帖子,由于我的列表是一种ArrayList,我倾向于第一种方法。然而,讨论有没有什么不同,因为我扩展了Collection类与扩展一般类?还是我过度思考这个?
一个解决方案需要更多的工作来实现并不意味着它不能在客观上比另一个更好。 – ColinD 2011-03-15 03:24:52
你是对的,但这个解决方案不需要人工努力,可以通过工具实现自动化。因此没有考虑在traff off – AbiusX 2011-03-15 13:58:54