Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在这里如何使用OOP:我需要避免重新实例化对象_Java_Oop - Fatal编程技术网

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

Java 在这里如何使用OOP:我需要避免重新实例化对象,java,oop,Java,Oop,我希望避免不断地重新实例化对象。以下是我所拥有的一个例子: 处理 错误 日志记录 命令 发电子邮件 数据库的东西 更新价格 还有更多 现在在“订单、电子邮件、数据库、价格更新程序”类中,我需要使用Orders类中的订单id和客户id实例化一个logger&error handler类 现在我可以继续在每个类中创建Orders的新对象、logger的新对象和错误处理程序,但这似乎是不必要的,还是正常的 我差点忘了提到,这将是一个在服务器上运行的自动化软件。所以它在一个循环中。获取订单、处理it

我希望避免不断地重新实例化对象。以下是我所拥有的一个例子:

处理

  • 错误
  • 日志记录
  • 命令
  • 发电子邮件
  • 数据库的东西
  • 更新价格
  • 还有更多
现在在“订单、电子邮件、数据库、价格更新程序”类中,我需要使用Orders类中的订单id和客户id实例化一个logger&error handler类

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

我差点忘了提到,这将是一个在服务器上运行的自动化软件。所以它在一个循环中。获取订单、处理it、电子邮件等

我是一个自学成才的“编码员”,所以如果我错过了一些明目张胆的东西,请原谅我。我正在从函数式编程风格过渡到面向对象编程风格

祝你一切顺利

所以它在一个循环中。获取订单、处理it、电子邮件等

如果记录器和错误处理程序确实需要知道订单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...
}
您甚至可以向他们传递
订单
,尽管这会比上面更紧密地约束他们


如果你这样做,他们可以在订单记录和处理错误时包含有关订单和客户的信息,你可以考虑推广这些信息,这样他们就不知道订单和客户ID本身,他们只知道需要包含在日志/错误报告中的一段信息。

听起来您需要依赖项注入。“现在在类中……我需要使用类Orders中的order id和customer id实例化一个logger&error handler类。”为什么您的日志记录程序和错误处理程序需要知道订单ID和客户ID?为了清楚起见,包含您正在做的事情的伪代码可能会很有用(就像我在回答中所做的那样)。@T.J.Crowder我的日志记录程序使用订单ID和客户ID作为日志文件的路径。@SLaks谢谢,我想就是这样了。我会调查的。不知道为什么我的帖子总是有负面的评论。这是个恰当的问题不?Stackoverflow真的很不友好呵呵。