2016-11-17 11 views
1

私はFlorist'sについてのプログラムを作る仕事があります。私はシングルトンであるクラスPriceListを作らなければならない。私はまた、メイン、次の与えられたテスト機能を持っている:シングルトンクラスでマップを実装する方法は?

public static void main(String[] args) { 
PriceList pl = PriceList.getInstance(); 
pl.put("rose", 10.0); 
pl.put("lilac", 12.0); 
pl.put("peony", 8.0); 

は、これらのpl.putsにみると()、私はクラスの価格表でMapインタフェースを実装することを決めたが、ときに私、私は、それを行うには、正確に方法がわかりませんこのクラスのオブジェクトは1つしかなく、Mapでなければなりません。私はすでにその多くが書かれているし、次に何をすべきか分からない:任意の助けを事前に

public class PriceList <String, Double> implements Map <String, Double> { 

private static PriceList instance = null; 

protected PriceList() {} 

public static PriceList getInstance() { 
    if (instance == null) 
     instance = new PriceList(); 
    return instance; 
} 

public void put(String string, double d) { 
    // TODO Auto-generated method stub 

}} 

感謝を!

+0

は宿題のような音が...何があります正確に質問ですか?あなたはまだそれをテストしましたか? – TungstenX

+0

はい、それは宿題ですが、それよりも大きいです。私は変更できないテストクラスFloristsTestを持っており、それを動作させるために必要なクラスを実装する必要があります。私はまだそれをテストしていません – yeti

+0

人々はここで宿題を手助けしたくはありません - あなたが研究することですが、それ以外に、BrunoDMは良い答えを与えました。 – TungstenX

答えて

2

あなたのシングルトンは正しいです!マップインターフェイスを実装する代わりに、クラス内にMap属性を作成し、putメソッドをmapsのputメソッドに委譲することができます。この例を見てみましょう:

public class PriceList{ 

    private Map<String, Double> map = new HashMap<String, Double>(); 

    private static PriceList instance = null; 

    private PriceList() {} 

    public static PriceList getInstance() { 
     if (instance == null) 
      instance = new PriceList(); 
     return instance; 
    } 

    public void put(String string, double d) { 
     map.put(string,double);  
    } 
} 
+0

私はシングルトンクラスを作る必要があり、このクラスの唯一のオブジェクトはマップであると考えました。このソリューション私はより便利、おかげで! – yeti

0

これを行うにはsimplierの方法があります:

  • は、属性花と価格でクラスPricePerFlowerを追加し、あなたの価格表のクラスの属性としてリストに入れました。

  • または、PriceListクラスにMap属性を追加するだけです。

0

マップの実装は、通常、かなり洗練されています(少なくとも効率的なもの)。

あなたは絶対にこのアウトライン(PriceListシングルトンなどとMapインタフェースを実装)、私はボンネットの下に、既存のマップの実装を使用することをお勧めし使用する必要が場合:

public class PriceList <String, Double> implements Map <String, Double> { 

    private Map<String, Double> map = new HashMap<>(); 
    private static PriceList instance = null; 

    protected PriceList() {} 

    public static PriceList getInstance() { 
     if (instance == null) 
      instance = new PriceList(); 
     return instance; 
    } 

    public void put(String string, double d) { 
     map.put(string, d); 

    }} 
関連する問題