首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:构造方法的更好方法

Java:构造方法的更好方法
EN

Stack Overflow用户
提问于 2012-02-27 02:58:00
回答 3查看 105关注 0票数 2

我对Java没有太多的了解,所以我想知道是否有人能给我一个关于构建这个应用程序的最佳方法的想法(或者它是否重要)。

在这种情况下,我从平面文件中提取数据并将其提交到SQL数据库。但是,我使用的特定准备语句取决于文件扩展名。

所以本质上

extension.

  • Opens程序检查文件statement.

  • Adds文件,创建缓冲的读取器-读取字符串数据。基于文件扩展名的

  • 为文件中的每一行生成准备好的lines).

  • Executes准备语句到batchlist.

  • Repeats (可能有数千条lines).

  • Executes准备语句。

)

我决定如何从文件扩展名获取到适当准备语句的方法是一个Map (它从所有实现相同接口的一组中调用相关的方法)。

有两种方法可以实现这一点。

  1. 将连接和缓冲读取器传递给适当的方法,它将完成所有工作(生成数千条准备好的语句并执行它们)。该方法将连接和字符串的'void').
  2. Pass返回给适当的方法。该方法返回准备好的语句。原始应用程序生成另一个字符串(下一行),将其传递给返回准备语句的方法,etc...until原始应用程序执行所有准备好的语句。

实际上,选项1需要更多的代码,选项2需要数千个方法调用。

注意,每个方法调用都是有条件的,因为使用".equals()“方法根据映射中的适当键检查字符串。

谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-02-27 03:07:19

像这样的事怎么样:

代码语言:javascript
复制
PreparedStatement prepareStatement(String line, File f);
void executeBatchUpdate(List<PreparedStatement> ps);

main(){
    List<PreparedStatement> myStatements; //initialize as you like
    Collection<File> myFiles; //initialize as you like
    for(File f : myFiles){ 
        BufferedReader br = new BufferedReader(new FileInputStream(.....
        while(br.hasNextLine()){
            myStatements.add(prepareStatement(br.readLine(), f));
        }
    }
    executeBatchUpdate(myStatements, f);
}

main方法中可以很容易地理解程序的流程,而其他部分则执行相对简单的任务。

编辑以反映您在准备语句时应该有文件元数据,并说明您有多个文件要处理的可能性。

使用switch并根据需要处理每种文件类型并不是很昂贵。或者,如果您有如此多不同的文件类型,以至于在switch情况下进行线性搜索将花费很大,那么您可以初始化一个允许固定时间查找的HashMap。

票数 1
EN

Stack Overflow用户

发布于 2012-02-27 03:08:49

我认为备选案文2最接近。利用面向对象的设计,只抽象出文件扩展名之间的不同功能--尝试在一个地方实现所有共同的功能。

例如,您的Map可以存储接受String并返回PreparedStatement的对象,并且每个文件扩展名都有其中一个。当然,这样的对象也需要引用Connection才能做到这一点--假设您对所有东西都使用相同的数据库连接,那么在第一次初始化和存储它时,可能会将它传递给它的构造函数。

票数 1
EN

Stack Overflow用户

发布于 2012-02-27 03:08:44

我建议您为每个文件类型编写一个类,并让该类处理。然后,如果您必须添加不遵循insert语句语义严格行的文件类型,那么破坏程序的风险就会更小。这有点像选项1,但它允许将来有更多的灵活性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9459503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档