Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.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 初始化从文件加载数据的类。是建筑商吗?_Java_Design Patterns_Builder Pattern - Fatal编程技术网

Java 初始化从文件加载数据的类。是建筑商吗?

Java 初始化从文件加载数据的类。是建筑商吗?,java,design-patterns,builder-pattern,Java,Design Patterns,Builder Pattern,我是设计模式的新手 我想创建一个类的实例,比如ClassA,并将它的一些字段设置为从配置文件读取的值 如果我将类的代码与使用值管理文件的代码区分开来,那么ClassA将成为一个纯粹的“业务逻辑”类 我想说这是一个构建器模式,因为构建器似乎不仅负责实例化,还负责初始化 但除此之外,构建器似乎专注于分步骤地打破创建过程,而在我的例子中,我只有一个(仍然是复合的)步骤 是否可以将其视为构建器模式?还是有什么不同?看起来更像工厂模式,而不是建筑商。这是因为只有一种方法可以完成所有工作。通常,构建器会有

我是设计模式的新手
我想创建一个类的实例,比如ClassA,并将它的一些字段设置为从配置文件读取的值
如果我将类的代码与使用值管理文件的代码区分开来,那么ClassA将成为一个纯粹的“业务逻辑”类

我想说这是一个构建器模式,因为构建器似乎不仅负责实例化,还负责初始化
但除此之外,构建器似乎专注于分步骤地打破创建过程,而在我的例子中,我只有一个(仍然是复合的)步骤


是否可以将其视为构建器模式?还是有什么不同?

看起来更像工厂模式,而不是建筑商。这是因为只有一种方法可以完成所有工作。通常,构建器会有一组setter样式的方法,允许自定义正在构建的对象。

看起来更像工厂模式,而不是构建器。这是因为只有一种方法可以完成所有工作。通常,构建器会有一组setter样式的方法,允许自定义正在构建的对象。

无步骤-无

没有步骤-没有


对我来说就像一个工厂…对我来说就像一个工厂…我也想到了工厂模式,然后我迷失了方向,因为工厂方法模式似乎专注于与接口的不同具体实现的隔离。所有我没有的东西。我认为@gnat下面的评论解释得很好。我也想到了工厂模式,然后我迷失了方向,因为工厂方法模式似乎专注于与接口的不同具体实现的隔离。所有我没有的东西。我认为@gnat下面的评论很好地解释了这一点。另外,构建者通常会构建一个对象图。例如,包含页眉、页脚、标题和某些段落的文档。很好的例子:+1同样,构建器通常会构建对象图。例如,包含页眉、页脚、标题和某些段落的文档。很好的例子:+1
 class ClassA {
    boolean config1;
    String originDB;
    String destDB;
    //other fields not initialized at the construction time
  }

  class ClassAFactory {
    boolean config1;
    String originDB;
    String destDB;        

    public ClassAFactory {
      //constructor of the class factory
      //load config values from file
    }

    public ClassA newInstance() {
     //create a new instance of ClassA and config fields config1, originDB, destDB
    }

  }
    ClassA a = ClassABuilder
            .config(config1)
            .originDB(originDB)
            .destDB(destDB)
            .build();
    // above reads a Builder to me and hopefully to any reader
    //   note above allows to swap, add, remove particular steps


    ClassA a = ClassAFactory.newInstance();
    // above reads Factory to me and hopefully to any reader
    //   note for reader, it's a one-step thing