C++에서 여러 개의 순수 가상 메서드로 추상 클래스를 만드는 것이 좋은지 알고 싶습니까?C++에서 큰 추상 클래스를 갖는 것이 좋거나 안좋은가요?
예를 들어 세션 초기화 프로토콜의 대화 상자 구현과 같은 일부 상황에서는 브리지 패턴을 사용하여 구현할 수 있음을 발견했습니다. 그러나 일반적인 작업에 대한 추상 기본 클래스를 갖는 것은 매우 큰 추상 클래스를 갖게됩니다. 퍼포먼스 관점에서 그런 클래스를 사용하고 구현하는 효과는 무엇입니까?
각각의 대화 상자마다 고유 한 구현이 있다는 점을 고려해보십시오. (예 : InviteDialog, RegisterDialog, InfoDialog, ...)
적용 브리지 패턴 : 무시 구현
class IIDialog{
public:
/*there are multiple pure virtual methodes at least 15*/
virtual int32_t SendResponse(ISipMessage* response) = 0;
protected:
/*there are multiple methods that use pure virtual methods*/
int32_t Send_Response(){retun SendResponse(response);}
}
class IInviteDialog : public IIDialog
{
/*Implemet virtual methods*/
}
class IRegisterationDialog : public IIDialog
{
/*implement virtual methode*/
}
다른 부분 (위의 클래스에 의해 사용되는 구현을위한 실제 구현 및 초록)
감사
성능보기에서
큰 클래스를 갖는 것이 디자인의 관점에서 나쁘지는 않지만 추상 적이거나 그렇지 않은 경우가 많습니다. – juanchopanza
과 그 오버 헤드에 대해 강조한 경우 24/7 서버 *를 사용하면 한 달 동안 약 2-3 초의 CPU 시간을 절약 할 수 있습니다. 나는 당신이 큰 vtable 배치가있는 경우에, 당신이 그 큰 vtable가 첫번째 장소에있는 지옥과 같은 왜 그 몇 초를 절약하는지에 관해 강조 할 더 중요한 것을 가지고 있다고 확신 할 수 있습니다. – WhozCraig
디자인의 시작 부분에서 상속을 사용하여 이러한 클래스를 구현하기로 선택했습니다. 상속을 사용하면 클래스 클라이언트가 형을 파생시킬 때마다 클래스 클라이언트를 차단하는 typecasting.for 클래스 클라이언트를 만들 수 있습니다. .in 다리 패턴 우리 공통점 및 variation.by이 공통점에서 작업의 매우 큰 숫자를 발견 할 필요가 식별해야합니다. 나는 Gof 책을 기반으로 추상 클래스에서 일반적인 작업을해야합니다. 나는 당신의 제안이 무엇인지 알고 싶습니까? –