java - 如何在此处使用 OOP:我需要避免重新实例化对象
问题描述
我想避免不得不继续重新实例化对象。这是我所拥有的一个例子:
一个处理类
- 错误。
- 记录。
- 订单
- 发电子邮件
- 数据库的东西。
- 更新价格
- 和更多...
现在在类中:“订单、电子邮件、数据库、价格更新器”我需要使用 Orders 类中的订单 ID 和客户 ID 实例化一个记录器和错误处理程序类。
现在我可以继续在每个类中创建新的订单对象和记录器和错误处理程序的新对象,但这似乎没有必要,或者这正常吗?
我差点忘了提,这将是一个在服务器上运行的自动化软件。所以它在一个循环中。获取订单、处理订单、发送电子邮件等。
我是一个自学成才的“编码员”,所以如果我错过了公然的东西,请原谅我。我正在从函数式编程风格过渡到面向对象的编程风格。
一切顺利!
解决方案
所以它在一个循环中。获取订单、处理订单、发送电子邮件等。
如果您的记录器和错误处理程序确实需要知道订单 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 本身,他们只知道一条信息他们需要包含在日志/错误报告中。
推荐阅读
- python - 使用信号创建用户名组
- azure - 在通过管道触发的 Azure VM 上运行自动化 UI 测试
- c++ - 密码显示双字母c ++的问题
- javascript - 捆绑失败意外的令牌反应原生
- javascript - 使用画外音增加 `role="spinbutton"`
- reactjs - 用打字稿反应useState(仅一个变量)
- python - 如何从 json 对象中检索特定数据并添加到新数组中
- wordpress - 如何减少 wordpress 网站中的 ttfb 时间?
- java - Maven 在编译阶段连接文本文件
- python-3.x - 使用 Python 更改 YAML 中的特定变量