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