Рассмотрим этот пример:
У меня есть сайт. Это позволяет пользователям создавать сообщения (может быть что угодно) и добавлять теги, которые описывают сообщение. В коде у меня есть два класса, которые представляют пост и теги. Давайте назовем эти классы Post
и Tag
.
Post
заботится о создании сообщений, удалении сообщений, обновлении сообщений и т. д.
Tag
заботится о создании тегов, удалении тегов, обновлении тегов и т. д.
Существует одна операция, которая отсутствует. Связывание тегов с постами. Я борюсь с тем, кто должен сделать эту операцию. Это может одинаково хорошо вписаться в любой класс.
С одной стороны, у Post
класса может быть функция, которая принимает Tag
параметр в качестве параметра, а затем сохраняет его в списке тегов. С другой стороны, Tag
класс может иметь функцию, которая принимает Post
параметр в качестве параметра и связывает Tag
его с Post
.
Выше приведен только пример моей проблемы. Я на самом деле сталкиваюсь с этим с несколькими классами, которые все похожи. Это может одинаково хорошо вписаться в обоих. Если не считать фактического включения функциональности в оба класса, какие соглашения или стили дизайна существуют, чтобы помочь мне решить эту проблему. Я предполагаю, что должно быть что-то не то, чтобы просто выбрать один?
Может быть, это правильное решение для обоих классов?