我想避免不得不重新实例化对象。这是我所拥有的示例:
处理
的类现在在类中:'订单,电子邮件,数据库,价格更新器'我需要有一个记录器和错误处理程序类,实例化为Orders类中的订单ID和客户ID。
现在我可以继续在每个类中创建Orders的新对象以及logger和错误处理程序的新对象,但这似乎是不必要的,还是正常的?
我几乎忘了提及,这将是在服务器上运行的自动化软件。因此它处于循环内。获取订单,处理订单,发送电子邮件等。
我是一个自学成才的“编码员”,所以如果我想念公然的东西,请原谅我。我正在从功能性转向面向对象的编程风格。
祝一切顺利!
答案 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,他们只知道一件他们需要包含在日志/错误报告中的信息。