Следует ли мне расширить список ArrayList (is-a) или мне следует включить его как член (has-a)?

Я делаю простую программу, которая поддерживает список чисел, и я хочу, чтобы этот список также имел имя. Каков наилучший подход: расширить ли мой класс списка ArrayList или включить в него член ArrayList? В обоих случаях, конечно, будет строковый член "name".

Первый подход означает, что мне нужно реализовать только геттер и сеттер для имени, но я думаю, что это слишком тесно связывает мой класс с конкретной реализацией ? Например, если бы я позже захотел использовать Vector, мне пришлось бы везде менять код.

Второй подход упростил бы изменение реализации, но, конечно, сейчас это становится довольно раздражающим, поскольку мне нужно реализовать кучу оболочек.

Я читал сообщения SO, касающиеся наследования и композиции, и, поскольку мой список является типом ArrayList, я склоняюсь к первый подход. Однако есть ли различия в обсуждении, потому что я расширяю класс Collection вместо расширения общего класса? Или я слишком много думаю об этом?

6
задан red.october 15 March 2011 в 02:30
поделиться