2014-04-06 2 views
0

런타임에 많은 인스턴스가있는 클래스 (클래스 A)가 있습니다. 이 클래스는 리소스 할당을 처리하는 다른 클래스 (클래스 R)를 사용합니다. 사실이 두 번째 클래스 (클래스 R)는 클래스 A의 모든 인스턴스에 대한 리소스 할당을 수행하기 때문에 하나의 복사본 만 있어야합니다.다른 클래스의 단일 인스턴스를 사용하는 클래스의 다중 인스턴스

는 그래서는 다음과 같습니다 :이 최고의 솔루션을 궁금하네요

Class P (Parent) 
Class A[64], which are childs of Class P 
Each of these requires access to the single instance of Class R 

. 클래스 P에 대한 클래스 R을 신경 쓰지 않고 그것에 대한 아무 소용이 없습니다 :

  1. 는 문제 부모 (클래스 P) 클래스 R의 인스턴스를 각 클래스 A. 에 인스턴스를 전달하자. 그것을 위해 그것을 관리 해야하는 것이 안타까운 것 같습니다. 아마도 네임 스페이스에 숨겨진
  2. 글로벌 변수, 문제 : 누구나 후 사용할 수 있습니다, 그것은
  3. , 그래서 클래스 A의 모든 인스턴스가 액세스를 A 급 내부 정적 변수가 클래스 A로 제한해야 클래스 R.의 동일한 인스턴스 문제 : 정적 클래스 변수는

악 또는 뭔가 내가 생각 적이 없다?

+0

상위 - 하위 관계 란 상속 또는 클라이언트 - 서번트 관계를 의미합니까? –

+0

온라인 싱글 톤 패턴을 찾는다. –

+0

@Tomasz Bekas : 클래스 P는 클래스 A를 인스턴스화한다. 즉, newChild = new ClassA(); – Moose

답변

2

클래스 R이 인스턴스 자체를 포함하도록합니다. 싱글 톤 패턴.

그런 다음 당신이 할 수 있습니다 : 당신이 일이 나중에 어떻게 작동하는지 당신의 마음을 바꿀 경우에 대비
class A 
{ 
R *resource; 
public: 
A() { resource = R::getInstance(); } 
} 

다음에서 새로운 클래스 포인터로 사용하기 '자원'에

.

그러나 부모가 인스턴스를 가져 오는 것이 더 좋고 유연 할 수 있습니다. 클래스 P의 예를 들면 다음과 같습니다

classA = new A(R::getInstance()); 

필요한 경우 쉽게 자원 클래스를 변경할 수 있지만 클래스 P는 자원 객체를 관리되지 않는이 방법 (예를 들어, 단위 테스트를 위해.).

관련 문제