2016-12-14 10 views
0

私のアプリケーションは異なる顧客(約20)を持ち、すべての顧客は接続設定を持つ*.propertiesファイルを持ち、プロパティパラメータは同じです。複数のプロパティファイルを区別する

現在、私はすべての顧客に対して、プロパティを読み取ってCustomerに保存する独自の方法を持っています。 20人の顧客と、その膨らんだ。私は今、より良い解決策を探しています。

private final static Customer get_CustomerXXXX() { 

     final Properties p = new Properties(); 

      p.load(S.class.getResourceAsStream("customerXXX.properties")); 
      return new Customer (p.getProperty("PARAM1", p.getProperty("PARAM2", p.getProperty("PARAM3") 
    } 

    if(SPECIFIC_CUSTOMER.XXXX) { 
     customerSettings = get_CustomerXXXX(); 

    } else if(SPECIFIC_CUSTOMER.BBBB) { 
     customerSettings = get_CustomerBBBB(); 
    } 
+0

*してください*注意を払うコードをフォーマットします。現時点ではどこにでもあります。スタックオーバーフローの目標は高品質の質問と回答のリポジトリであることを覚えておいてください。読めないコードはその目標を損なうものです。 –

答えて

0
public class CustomerTest { 
    private String identifier; 

    public CustomerTest(String identifier) { 
     this.identifier = identifier; 
    } 

    public Properties getProerties() { 
    Properties p = null; 
    try { 
      p = new Properties(); 
      p.load(CustomerTest.class.getResourceAsStream("customer" + identifier + ".properties")); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return p; 
    } 
} 

これは、あなたがコメント@OPで提案されている方法だろう。あなたが将来的にも、私は同じだろうと確信している場合

0

プロパティパラメータが同じ

です。初めてプロパティー・ファイルを読み取ることができます。次回以降は、以前のプロパティファイルからロードされた値を使用します。

ここでは、シングルトンパターンとファクトリメソッドのデザインパターンを組み合わせることができます。

は、次のような方法を持っている必要があります。

private final static Properties getProperties(String idetifier) 
{ 
    Properties p = new Properties(); 
    p.load(S.class.getResourceAsStream("customer"+idetifier+".properties")); 
    return p; 
} 
+0

でも接続設定が異なる場合 – Aelop

+0

接続設定が異なるだけの場合は、接続設定を顧客固有のファイルに入れてください。共通の値を別のファイルに移動します。 – Azodious

+0

'すべての顧客は接続設定で独自の* .propertiesファイルを持っていますが、プロパティのパラメータ名は同じものです。私が理解しているように、パラメータ名(キー)だけが異なるわけではありませんが、値はです。すべてのポルタジーファイルがparam1 = xxxとparam2 = yyyのようになっていることを意味します。 xxxとyyyは変更できますが、param1とparam2は常にその名前で存在します。私は間違っている可能性がありますが、それは私たちに教えてくれる – Aelop

関連する問題