AutoCloseable关闭方法

时间:2018-02-19 18:28:04

标签: java coding-style business-logic autocloseable

一个好的做法是在close方法(AutoCloseable接口)中包含业务逻辑,而不是通过try-with-resource手动调用逻辑?

我有一个场景,我使用jax-b将流方式写入XML文件,我需要手动编写开始标记元素并启动结束元素。 业务逻辑是密切的方法,但我认为不是好的做法,你的意见是什么?

我的例子

  public class PhoneBookWriter implements AutoCloseable {
         public void open(Path filePath) {
               // open file
         }

         public void write(PhoneBookInfo phoneBookInfo) {
               // write phone book pojo to xml file
         }

         public void close() {
               // check if stream is not null
               // --> part of business logic -> writeEndElement via XmlOutputWriterStream
               // close stream
  }

您对开放和关闭方法有何看法?可能该方法有业务逻辑还是只有开放流(open方法)和close流(close方法)?应该将另一个逻辑提取到专用方法吗?

1 个答案:

答案 0 :(得分:0)

如果将业务逻辑定义为与代码的主要用例直接相关的工作,则编写结束元素不是业务逻辑。此代码支持一个用例:PhoneBookInfo条目写入持久存储或外部存储。如何打开/关闭文件和文件格式详细信息,甚至是您选择直接使用文件的事实,都是您或您的团队负责人做出的所有技术架构决策。

您是否有不应编写结束元素的场景?

如果没有,那么close()方法应该执行与文件操作和格式化相关的所有技术要求。