2012-03-06 15 views
1

私は自分のJAVAプログラムのデザイン面に少し問題があります。そこには私がやったことを考えている方法がいくつかありますが、どの方法が最善か、それを行う方法?以下は、私は少し混乱して取得していた理由は、私はそこだけプロパティ値が異なる使用しています部屋の異なる3種類のことである一方通行Javaデザインの混乱

      <<ABSTRACT>> 
          Rooms class 

     extends    extends   extends 
    Room TYPE U   Connector X  Connector U 


      AGGREGATE walls - into each room type 

の一例である(高さ、幅等。)、すべて同じ特性を持っています。これは、各部屋タイプの新しいクラスを作成することを保証しますか?

1部屋のクラスを持っていて、各部屋のタイプごとに3回インスタンス化し、セッターとゲッターでそのプロパティを変更するのは他の方法ですか?

私はそれぞれの部屋のプロパティとかなり長い時間がかかる可能性がある集約された壁のプロパティを設定する必要があるため!

ご協力いただきまして誠にありがとうございます。

+1

意味のある方法で回答が得られるかどうかは不明です。サイズが異なる場合は、どのように識別/使用したいかによってまったく異なります。インスタンス化してから設定するのではなく次元を取るctorを持つ必要があるようにも思えます。 –

+0

あなたは本当に良い答えが必要な場合は、詳細をあなたの問題を説明する必要があります。あなたの質問は、それが立っているように、ほとんど理解できません。問題を定義することから始める必要があります。「部屋の多い家を考えてみましょう。それぞれの部屋は異なる次元と壁の数を持っています...私は次のデザインと思いつきました。私はこれが理にかなってほしいと思う。 – CKing

答えて

2

客室のプロパティ値が異なる場合は、factoryスタイルのパターンを使用することを検討してください。ここには簡単な例があります:

class Room { 

    // room properties 
    int x, y, z; 

    // constructor taking properties 
    public Room (int x, int y, int z) { 
     this.x = x; 
     this.y = y; 
     this.z = z; 
    } 

    // factory methods 
    public static Room createRoomType1() { 
     return new Room(100, 200, 300); 
    } 

    public static Room createRoomType2() { 
     return new Room(400, 500, 600); 
    } 

} 

ファクトリメソッドは、さまざまなタイプのルームに対して「プリセット」コンストラクタに似ています。これは繰り返し/プロパティの設定とクラスが多すぎることのバランスを取る。

+0

うんうん、壁のクラスのために、壁の配列リストの1つの部屋に対して4つの壁をインスタンス化するとどういうことが起こるのだろう。それぞれの壁は異なるサイズですか?それらのファクトリメソッドはありますか? createroomType1の壁のようにして、そのメソッドの内側に部屋の4つの壁をインスタンス化しますか? – user969729

+0

'Wall'インスタンス化のような、すべての部屋に共通するものは、' Room'コンストラクタに入れます。 – paislee