나는 내 코드에서 정책을 많이 사용하고 있으며 대개 매우 만족 스럽습니다. 때때로 정책을 선택하고 상황을 해결하기 위해 habbits를 개발 한 상황에서 패턴을 사용하는 경우가 종종 있습니다. 보통 다음과 같이 시작합니다.나는 정책을 남용합니까?
class DrawArrays {
protected:
void sendDraw() const;
};
class DrawElements {
public:
void setIndices(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
protected:
void sendDraw() const;
};
template<class Policy>
class Vertices : public Policy {
using Policy::sendDraw();
public:
void render() const;
};
런타임에 정책을 선택하면 다른 상황에서 해결할 수 있습니다.
다른 코드 경로 :
if(drawElements) {
Vertices<DrawElements> vertices;
} else {
Vertices<DrawArrays> vertices;
}
상속과 가상 통화 :
class PureVertices {
public:
void render()=0;
};
template<class Policy>
class Vertices : public PureVertices, public Policy {
//..
};
두 솔루션 모두 나에게 잘못 생각합니다. 첫 번째는 유지 관리가 쉽지 않으며 두 번째는 가상 호출의 오버 헤드를 도입하여 처음부터 정책을 사용하여 피하려고했습니다.
적절한 해결책이 누락 되었습니까? 아니면 잘못된 패턴을 사용하여 문제를 해결합니까?
런타임 선택 정책은 나에게 전략 패턴처럼 많이 보입니다. 나는 그것이 당신의 경우에 도움이되는지 확신하지 못합니다. – stefaanv