2012-03-05 3 views
4

바보 같은 질문으로 들리지 않길 바랍니다.Java 클래스 및 생성자

나는 클래스 A와 클래스 B를 가졌습니다. 이제 B만이 문자열 ID입니다. 이제는 각각 B 유형의 객체를 0 개 이상 가질 수있는 객체 A를 여러 개 가질 수 있습니다. 이들은 각각의 클래스 A에있는 HashMap (ID, someData)에 포함되어 있습니다.

클래스 A에 새로운 ID를 추가 할 때마다 이미 이 내가 가지고있는 다른 클래스 A 객체 중 하나에서 동일한 ID를 가진 유형 B의 객체에 있는지 확인하기 위해 각각 수행합니다. 그렇지 않으면 새 B 객체를 만듭니다.

희망적입니다. 내가 묻는 것이 잘못 되었다면 어떤 식 으로든 을 설명하기에 충분히 친절하십시오. 이것이 나쁜 관행이나 개념 상 잘못된 것입니다.

고마워요.

EDIT : 예를 들어 A가 Course 클래스 나 Catalog 또는 Bank 등으로 말하면 모든 오브젝트에 HashMap (ID, someData)을 공유하는 것이 바람직하지 않습니다. 각 A 클래스는 일부 학생/고객을 공유 할 수 있지만 각각의 A 클래스는 서로 다른 B 클래스 객체를 포함 할 수 있습니다.

답변

4

좋은 연습은 아니며, Instance Manager Pattern을 구현하는 것 같습니다.

  • 능력은 관리 객체 (들)의 (열쇠를 통해) 하나 개 이상의 인스턴스를 검색합니다. 하나의 관리 객체 만있는 경우 키는 필요하지 않습니다. 당신이 그들 모두를 확인할 수 있도록
0

당신이해야 할 일은 모든 개체의 컬렉션을하는 것입니다. 더 많은 A 객체를 얻으면 더 비효율적이게됩니다. diiferent는 이것을 구조화하는 것이 었습니다. ID를 수집 할 때 사용할 수 있습니다.

Map<ID,/* class with A and someData *> map = ... 

이 당신이 당신의 목적을 달성하기 위해 모든 A.

0

를 통해 ID의 고유성을 보장 할 수 있습니다, 대신 인스턴스 변수의의의 HashMap static 변수를 만들 수 있습니다. 따라서 클래스 A의 모든 인스턴스간에 공유됩니다.

0

나는 당신이라면 B_Factory 클래스를 만들었을 것입니다. 이 클래스는 B 객체를 생성합니다. 클래스 객체는 B_Factory 메소드를 호출하여 B 객체를 추가하거나 삭제합니다. B_Factory 내부에서 Map을 사용하여 B 객체의 인스턴스를 저장할 수 있습니다.

모든 A 인스턴스에 삽입 될 B_Factory 클래스의 인스턴스는 하나만 있어야합니다.

0

모든 A 인스턴스를 반복하고 Hashmaps containsKey 메서드를 사용하여 새 B 값이 이미 저장되어 있는지 확인해야합니다. 모든 A 클래스에 모든 B 값을 한 번만 저장하면되는데, HashMap 필드에 정적 수정자를 추가 할 수 있습니다.