У меня есть два объекта: Пользователи и Почта. Пользователи создают объекты Mail и отправляют их другим пользователям.
- Если бы я хотел получить всю почту для пользователя, я мог бы создать метод, подобный GetMail (), который бы возвращал массив объектов Mail, принадлежащих этому пользователю.
- Но если бы я хотел получить всю почту через систему, какой "тип" объекта был бы ответственен за это?
- Чтобы решить эту проблему, я обычно создаю Manager, который является объектом, отвечающим за работу с коллекцией объектов определенного типа. MailManager имеет дело с коллекциями объектов Mail. GetMailForUser () - это один метод, GetAllMail () - это другой метод. Объект User вызывает MailManager и выполняет GetMailForUser (me). Это глупо?
- Когда пользователь выполняет контроллер CreateMail, создается новый экземпляр объекта Mail. Объект Почта, видя, что он создает новую Почту типа «отправлено», решает продолжить и создать второй объект Почты для получателя, типа «получено». Создание одного объекта Mail инициирует создание второго объекта Mail. Это глупо? Должен ли контроллер создать оба объекта Mail или только первый «отправленный»?
- Когда два Пользователя являются друзьями, связь сохраняется в таблице Отношений. Я использую простой объект для отношений. У RelationshipManager есть метод GetFriendsForUser (). У объекта User есть метод GetFriends (), который вызывает RelationshipManager. Это глупо?