2011-04-21 2 views
0

만 특정 클래스를 할 수있는 디자인 패턴이 있습니까하지만 난 내 사용하지 않으 클래스, 다른 클래스에서 클래스 A의 배열을 변경할 수 없습니다.새로운 클래스 B에 대한 권리를 가지고 내부 클래스</p> <p>내가는 클래스 A를 원하는 사용하지 않고 새로 만들기 다른 특정 클래스

클래스 B의 배열을 참조하는 다른 클래스에서 클래스 B를 innerClass로 변경하는 동안 오류가 발생할 수 있습니다. 네임 스페이스가 변경되었습니다. 이 클래스를 변경할 수 없습니다

+0

개인 내부 클래스가이 작업을 수행하는 올바른 방법입니다. 왜 당신은 내부 클래스를 사용하고 싶지 않아? –

+0

나는 이것을 할 수있는 유일한 방법은 내부 클래스에 의한 것이라고 생각합니다. 그러나 생성자에서 '친숙'수정자를 사용하면 클래스와 동일한 패키지에서 팩토리를 만들고 팩토리를 사용하여 클래스의 인스턴스를 만들 수 있습니다. – hooknc

+0

왜 그런지 설명해주십시오. 문제에 대한 더 나은 해결책이있을 수 있습니다. – jgauffin

답변

3

클래스 A와 B가 동일한 패키지의 유일한 클래스 인 경우 클래스 B 패키지의 생성자를 비공개로 설정하면 원하는 것을 얻을 수 있습니다.

일반적인 제어 방법은 B의 생성자를 비공개로 만들고 static 팩토리 메서드를 추가하는 것입니다. 예를 들어 A?

B를 인터페이스로 변경하고 A를 사용하여 B를 구현하는 내부 클래스를 만드는 것이 또 다른 옵션입니다.