클래스 A에 멤버 속성이 일부 있다고합니다. A는 클래스 B (std::vector<B>
)의 객체를 가진 벡터도 가지고 있습니다. 이러한 B 객체는 A의 속성 중 일부 (5 개)를 필요로합니다.이 작업을 처리하는 두 가지 방법이 있습니다.C++ 클래스의 디자인 : 다른 클래스 멤버의 클래스 멤버의 공용; 작은 인터페이스 대 작은 클래스
1) B가 해당 속성에 대한 참조를 가지고 B의 생성자에 지정하도록합니다.
2) B에 A 객체에 대한 참조 만 있고 public으로 getAttributeXYZ()
함수를 통해 속성을 가져옵니다.
나는 1) 기술적으로 A에 대한 지식이 거의 없다는 것을 알 수 있습니다. 따라서 잘못된 A 함수를 호출 할 수 없기 때문에 더 낫습니다. 하지만 생성자가 작고 B 클래스의 특성 (참조)이 훨씬 적기 때문에 2) 훨씬 더 깔끔한 느낌입니다. 일반적인 더 좋은 방법이 있을까요, 세부 사항에 의존할까요?
컨텍스트 : 내 프로그램에서 A의 멤버는 B 개체 모두가 공유 할 수있는 텍스처 관리, 텍스트 그리기 등을위한 클래스입니다.
# 1은 A에 대해 덜 알고있는 논리를 따르지 않습니다. 속성을 직접 참조하는 경우에도 여전히 A에 종속적입니다. 사실 개인적인 구현에 의존하기 때문에 사실입니다. A에 대한 자세한 내용은 A에 대한 참조를 저장하고 공용 접근 함수라고하면 A와 B 사이의 의존성이 줄어 듭니다. * 논리적으로 종속 된 두 가지 사이의 종속성을 최소화하려고하면 * 어리 석음으로. 가장 이론적으로 순수하지 않더라도 가장 명확한 디자인을 사용하십시오. –
"일반적으로 더 좋은 방법이 있습니까? 아니면 세부 사항에 달려 있습니까?": 세부 정보를 모른 채 어떻게 알 수 있습니까? :) 그렇기 때문에 좋은 질문은 일반적인 질문이 아니라 [MCVE] (http://stackoverflow.com/help/mcve)로 작성되어야합니다. – wasthishelpful