Как я могу использовать ООП здесь: мне нужно избегать повторного создания объекта - PullRequest
0 голосов
/ 03 февраля 2019

Я хочу избежать повторного создания объектов.Вот пример того, что у меня есть:

Класс, который обрабатывает

  • Ошибки.
  • Ведение журнала.
  • Заказы
  • Отправка по электронной почте
  • База данных.
  • Обновление цен
  • И еще ...

Теперь в классах: 'Заказы, электронная почта, база данных, средство обновления цены 'Мне нужно, чтобы был создан класс журнала и обработчика ошибок с идентификатором заказа и идентификатором клиента из класса Orders.

Теперь я мог бы продолжать создавать новые объекты Orders и новые объекты logger и обработчика ошибок в каждом классе, но это кажется ненужным, или это нормально?

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

Я «программист-самоучка», поэтому, пожалуйста, прости меня, если я скучаю по вопиющим вещам.Я перехожу от функционального к объектно-ориентированному стилю программирования.

Всего наилучшего!

1 Ответ

0 голосов
/ 03 февраля 2019

Так что внутри цикла.Получает заказы, обрабатывает их, отправляет электронные письма и т. Д.

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

Logger logger = /*...create or acquire the logger...*/;
ErrorHandler errHandler = /*...create or acquire the error handler...*/;
for (Order order : orders) {
    logger.setOrderInfo(order.id, order.customerId);
    errHandler.setOrderInfo(order.id, order.customerId);

    // ...handle the order...
}

Вы можете даже передать им Order, хотя это связывает их еще более тесно, чемвыше.

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

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