Вариант 1
- Преимущества - все преимущества наследования и повторного использования
- Недостатки - код теперь сигнализирует потребителям, что он взят из Списка. Если это необходимо изменить позднее, это повлияет на всех связанных потребителей.
Вариант 2
- Преимущества - детали реализации о хранении данных о продажах абстрагированы от потребителя. Таким образом, если реализация должна измениться (например, словарь), потребитель класса будет защищен от этих изменений.
- Недостатки - класс SalesList теперь должен будет предоставить дополнительные методы для получения и / или установки внутреннего объекта _list. это дополнительный код, который необходимо сохранить. Кроме того, если внутренняя реализация изменяется, вам нужно позаботиться о том, чтобы поддерживать прежнее поведение ...
Просто несколько мыслей, которые приходят на ум.
НТН.