Я задавал себе этот вопрос несколько раз, когда создавал классы, особенно те, которые связаны с коллекциями, но я никогда не придумал удовлетворительного ответа. Это вопрос проектирования ООП.
Например, в программе регистрации чековой книжки говорят, что у меня есть класс BankAccount
. BankAccounts содержат данные, включающие имя учетной записи, тип учетной записи (перечисление чеков, сохранение, ...) и другие данные, но наиболее важным является набор Adjustment
s (пополнение или снятие) в учетной записи .
Здесь у меня есть два варианта для хранения коллекции корректировок:
- Создайте коллекцию и сохраните ее в качестве члена в классе BankAccount. Это все равно что сказать: «BankAccount имеет набор корректировок».
- Наследовать от коллекции. Это все равно, что сказать: «BankAccount - это коллекция корректировок».
Я думаю, что оба решения интуитивно понятны, и, конечно, оба имеют свои преимущества и недостатки. Например, создание экземпляров позволяет классу (в языках, которые допускают только один базовый класс) наследовать от другого класса, в то время как наследование от коллекции позволяет легко управлять методами Add, Remove и другими без необходимости писать суррогатные методы для переноса 'те.
Итак, в таких ситуациях какой подход лучше?