Ооп концепция для 3 различных объектов - PullRequest
1 голос
/ 10 октября 2011

У меня есть поставщик и объект клиента.Пока все хорошо.

Я хочу отправить электронное письмо клиенту, но, учитывая некоторые старые добрые концепции ООП, нельзя добавлять метод отправки электронной почты поставщику или клиенту, потому что эти методы нарушатПринцип ПСП (среди прочих).Я, наверное, должен сказать: и у клиента, и у поставщика есть несколько базовых операций CRUD.

Итак, каково решение?Класс SupplierClientEmail со статическим методом, даже если этот класс, вероятно, никогда больше не будет использоваться или снова использоваться?Как вы справляетесь с такими понятиями в вашем коде?

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Если это действительно метод, который вы будете использовать один раз здесь, никогда больше и только с объектами поставщика, имеет смысл только включить его здесь в качестве метода. По моему личному мнению, небольшое количество классов, состоящих из одного метода, намного более запутанно и громоздко, чем простое добавление частного метода.

Другим вариантом может быть что-то вроде класса EmailHelper, в который вы затем добавляете этот метод, а также любые другие свободно связанные методы, связанные с электронной почтой.

0 голосов
/ 10 октября 2011

Вам нужно вести учет электронной почты? Если нет, то вам не нужен объект для этого. У вас может быть EmailService, у которого есть метод sendEmail(client, supplier) или любой другой, имеющий смысл.

Если вам нужно отслеживать электронные письма, например, хранить какой-то маркер в базе данных, чтобы показать, что электронное письмо было отправлено, вы можете иметь класс Email, который имеет ссылку как на клиента, так и на поставщика, с информацией как dateSent и любая другая необходимая вам информация. Таким образом, вы всегда можете вернуться и посмотреть, какое электронное письмо было отправлено клиенту / поставщику. В этой схеме Email знает о клиенте и поставщике, но эти классы не знают об электронной почте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...