2010-07-26 1 views
1

이전에 디자인 한 세 가지 클래스 (A, B 및 C)에서 사용할 클래스 X를 추가하려고합니다.C++에서 여러 클래스가 사용하는 클래스를 설계 할 때 API/ABC를 사용해야합니까?

새로운 클래스 X는 새로운 기능을위한 데이터와 함수를 포함 할뿐만 아니라 더 낮은 계층을 숨기기 위해 클래스를 사용하는 클래스에 서비스를 제공합니다. 문제는 A, B 및 C가 클래스 X를 완전히 다르게 사용할 것인데, 즉 다른 기능을 사용한다는 것입니다.

제 질문은 새 클래스 X에 대한 API (또는 C++의 추상 기본 클래스)를 제공해야하는지 여부입니다. 필요한 경우, 해당 API를 X 클래스 또는 A, B 및 C 클래스별로 사용해야합니까? 필자는 API를 구현하는 클래스가 호출자와 더 밀접하게 관련되어 있다고 읽었습니다. 각 호출자에 대해 하나의 API를 제공하면 API에는 특정 호출자에게 필요한 기능 만 포함됩니다.

아니면 정상적인 C++ 클래스를 만들고 호출자가 A, B 및 C에서 각각 X의 공용 함수 하위 집합을 사용하도록해야합니까? "기술적으로"모두 사용할 수는 있지만? 클래스 X의 기능은 X와 비슷한 클래스를 생성해야 할 필요성도 변경되지 않을 것입니다.

객체 지향 프로그래밍에서 완전히 손실되지 않은 경우, 클래스에 대한 인터페이스/API를 제공하는 한 가지 이유 호출자가 인터페이스 이름에서 작동하고 동적 바인딩을 사용하여 올바른 서브 클래스 유형을 해결했기 때문에 다른 서브 클래스를 추가하면 인터페이스/API를 사용하는 코드가 변경 될 필요가 없다는 것입니다.

불확실한 점이 있으면 최대한 알려 주시면 최대한 빨리 답변 드리겠습니다.

감사합니다,

토마스

답변

0

변경 사항이 발생하지 않으면 추가 작업을 할 가치가 없을 것입니다.

그렇다면 새로운 클래스가 기능의 전부 또는 일부를 구현하는지 여부를 결정해야합니다. 예를 들어 백엔드 저장소를 공유하므로 모두를 한 번에 업데이트해야합니다 (이 경우 분할하는 것이 필요하지 않습니다). 또는 완전히 분리 된 관심사와 관련이 있습니다 (@GarethOwen에서 제안한대로). 아마가는 길.

관련 문제