Розглянемо цей приклад:
У мене є веб-сайт. Це дозволяє користувачам робити публікації (можуть бути будь-якими) та додавати теги, що описують публікацію. У коді я маю два класи, які представляють пост та теги. Давайте можемо називати ці класи Post
та Tag
.
Post
піклується про створення публікацій, видалення публікацій, оновлення дописів тощо.
Tag
дбає про створення тегів, видалення тегів, оновлення тегів тощо.
Є одна операція, якої немає. Зв’язування тегів до публікацій. Я борюся з тим, хто повинен зробити цю операцію. Він міг однаково добре вписуватися в будь-який клас.
З одного боку, Post
клас може мати функцію, яка приймає Tag
як параметр, а потім зберігає його у списку тегів. З іншого боку, Tag
клас може мати функцію, яка приймає Post
як параметр і посилає Tag
на Post
.
Сказане - лише приклад моєї проблеми. Я насправді натрапляю на це з кількома класами, які всі схожі. Він може однаково добре вписуватися в обидва. Окрім фактичного розміщення функціональності в обох класах, які конвенції чи стилі дизайну існують, щоб допомогти мені вирішити цю проблему. Я припускаю, що має бути щось коротше, ніж просто вибрати його?
Може бути, правильна відповідь на це в обох класах?