2012-03-06 4 views
1

내 JAVA 프로그램의 디자인 측면에 약간의 문제가 있습니다. 몇 가지 방법을 생각해 봤지만 어떤 방법이 가장 좋을지 모르거나 더 나은 것이 있는지 알고 있습니다. 그것을 할 방법?. 다음 편도Java 디자인 혼동

      <<ABSTRACT>> 
          Rooms class 

     extends    extends   extends 
    Room TYPE U   Connector X  Connector U 


      AGGREGATE walls - into each room type 

(등 폭 높이, ..)이 I 약간 혼란 받고있는 이유 때문에 I만을 사용하고 실의 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

예. 벽 배열 클래스의 인스턴스를 만들 때 벽 배열리스트의 한 공간에 4 개의 벽을 말하면 어떨까요. 각 벽은 다른 크기일까요? 그것들을위한 팩토리 메소드를 가질 수 있습니까? createroomType1 벽을 만든 다음 그 방의 내부에 방에있는 4 개의 벽을 인스턴스화 하시겠습니까? – user969729

+0

'Wall'인스턴스 생성과 같이 모든 룸에 공통적 인 것이 무엇이든간에, 'Room'생성자에 넣습니다. – paislee