如何在这里使用OOP:我需要避免重新实例化对象

时间:2019-02-03 15:31:17

标签: java oop

我想避免不得不重新实例化对象。这是我所拥有的示例:

处理

的类
  • 错误。
  • 记录。
  • 订单
  • 通过电子邮件发送
  • 数据库内容。
  • 更新价格
  • 还有更多...

现在在类中:'订单,电子邮件,数据库,价格更新器'我需要有一个记录器和错误处理程序类,实例化为Orders类中的订单ID和客户ID。

现在我可以继续在每个类中创建Orders的新对象以及logger和错误处理程序的新对象,但这似乎是不必要的,还是正常的?

我几乎忘了提及,这将是在服务器上运行的自动化软件。因此它处于循环内。获取订单,处理订单,发送电子邮件等。

我是一个自学成才的“编码员”,所以如果我想念公然的东西,请原谅我。我正在从功能性转向面向对象的编程风格。

祝一切顺利!

1 个答案:

答案 0 :(得分:0)

  

因此它在循环内。获取订单,处理订单,发送电子邮件等。

如果确实是您的记录器和错误处理程序需要知道订单ID和客户ID,那么您可以在这些类上提供mutator方法,以设置ID。然后,您只需要每个实例的一个实例,就可以在循环中对其进行更新:

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,尽管它们与上面的联系更为紧密。

如果您这样做是为了让他们在记录/处理错误时可以包括有关订单和客户的信息,那么您可以考虑对该信息进行概括,以使他们本身不了解订单和客户ID,他们只知道一件他们需要包含在日志/错误报告中的信息。