应用程序属性作为静态变量或具有单例的实例变量

时间:2015-03-16 18:41:15

标签: java design-patterns properties

我需要将.properties文件中的应用程序属性读取到应该作为应用程序属性的单个点的类。对于这样的类,推荐的方法是什么:将这些属性定义为静态变量或将实例变量定义为单例模式?

我的格式为 key = value myapp.properties文件。假设此文件中定义了2个应用程序属性:

  

公司= ABC
  BATCHSIZE = 1000

在应用程序启动时,我将把这个文件读入类ApplicationProperties。每当我需要使用应用程序属性时,我将使用此类。

我有两个选择:

选项1:将应用程序属性定义为静态变量:

public class ApplicationProperties {
   private static String COMPANY;
   private static int BATCH_SIZE;

   static {
      // read myapp.properties file and populate static variables COMPANY & BATCH_SIZE
   }

   private ApplicationProperties() {}

   public static String getCompany() {
      return COMPANY;
   }
   public static int getBatchSize() {
      return BATCH_SIZE;
   }
}

选项2:将应用程序属性定义为实例变量:

public class ApplicationProperties {
   private static ApplicationProperties INSTANCE = new ApplicationProperties();

   private String company;
   private int batchSize;

   private ApplicationProperties() {
      // read myapp.properties file and populate instance variables company & batchSize
   }

   public static ApplicationProperties getInstance() {
      return INSTANCE;
   }

   public String getCompany() { 
      return this.company;
   }
   public int getBatchSize() {
      return this.batchSize;
   }
}

对于选项1,我将以这种方式访问​​:

ApplicationProperties.getCompany();
ApplicationProperties.getBatchSize();

对于选项2,我将以这种方式访问​​:

ApplicationProperties.getInstance().getCompany();
ApplicationProperties.getInstance().getBatchSize();

哪个更好?为什么?

如果此问题已经回答,请指出答案。

由于

1 个答案:

答案 0 :(得分:1)

选项2稍微复杂和冗长而没有任何优势,因此选项1是更好的设计。

恕我直言,这不是"基于意见的"。