아래 예를 고려하십시오. ColorChoice 열거 형을 변경하면 모든 IWindowColor 하위 클래스에 영향을줍니다.
열거 형은 취성 인터페이스를 유발하는 경향이 있습니까? 더 다형성 유연성을 허용하는 열거 형보다 좋은 것이 있습니까?
enum class ColorChoice
{
Blue = 0,
Red = 1
};
class IWindowColor
{
public:
ColorChoice getColor() const=0;
void setColor( const ColorChoice value )=0;
};
편집 : 내 예제로 색상을 사용하여 죄송합니다. 질문이 아닙니다. 다음은 붉은 청어를 피하고 유연성의 의미에 대한 자세한 정보를 제공하는 다른 예입니다.
enum class CharacterType
{
orc = 0,
elf = 1
};
class ISomethingThatNeedsToKnowWhatTypeOfCharacter
{
public:
CharacterType getCharacterType() const;
void setCharacterType( const CharacterType value );
};
또한, 적절한 ISomethingThatNeedsToKnowWhatTypeOfCharacter 서브 클래스에 대한 핸들이 팩토리 디자인 패턴에 의해 전달된다고 가정하십시오. 이제 허용 가능한 문자 유형이 {human, dwarf} 인 다른 응용 프로그램에 대해 향후 확장 할 수없는 API가 있습니다.
편집 : 내가하고있는 일에 대해 더 구체적으로하십시오. 이 ( MusicXML ) 사양 의 강력한 바인딩을 설계하고 있으며 xs : enumeration으로 선언 된 사양에서 이러한 유형을 나타내는 열거 형 클래스를 사용하고 있습니다. 다음 버전 (4.0)이 나올 때 어떻게되는지 생각하려고합니다. 수업 라이브러리가 3.0 모드와 4.0 모드에서 작동 할 수 있습니까? 다음 버전이 100 % 이전 버전과 호환되는 경우 가능합니다. 그러나 열거 값이 사양에서 제거되면 물에서 죽었습니다.