확장성을 위한 클래스 계층 구조 디자인 시 고려 사항
업데이트: 2007년 11월
잘 디자인된 클래스 계층 구조의 경우에도 지속적인 향상은 필요합니다. 클래스 계층 구조를 디자인할 때 어떠한 방식을 선택하느냐에 따라 나중 작업이 간단해질 수 있습니다.
클래스 계층 구조 확장
다음 내용은 클래스 계층 구조의 확장을 용이하게 하는 제안 사항입니다.
클래스 계층 구조는 일반적인 것에서 구체적인 것으로 정의됩니다. 상속 계층 구조의 각 수준에서 가능한 한 일반적인 것으로 클래스를 정의합니다. 파생 클래스는 기본 클래스의 메서드를 상속하고 다시 사용하고 확장할 수 있습니다.
예를 들어, 컴퓨터 하드웨어를 모델링하는 클래스 계층 구조를 디자인하고 있다고 가정합니다. 출력 장치 모델링을 시작할 때 Display, Printer 및 File이라는 클래스를 정의할 수 있습니다. 그런 다음 기본 클래스에 정의된 메서드를 구현하는 클래스를 정의할 수 있습니다. 예를 들어, LCDDisplay 클래스는 Display에서 파생되어 EnterPowerSaveMode라는 메서드를 구현할 수 있습니다.
데이터 형식 및 저장소를 정의할 때 되도록이면 포괄적으로 정의하여 나중에 변경할 필요를 없애 줍니다. 예를 들어, 현재 데이터에 표준 Integer 변수만 필요한 경우에도 Long 형식의 변수를 사용할 수 있습니다.
파생 클래스에 필요한 항목만 노출합니다. Private 필드 및 메서드는 이름 충돌을 줄여 주며 나중에 변경해야 하는 항목을 다른 사용자가 사용하지 못하도록 합니다.
파생 클래스에만 필요한 멤버는 Protected로 표시해야 합니다. 이렇게 하면 파생 클래스만 해당 멤버에 종속되며 개발 중에 해당 멤버를 보다 쉽게 업데이트할 수 있습니다.
기본 클래스 메서드가 상속하는 클래스에 의해 기능이 변경될 수 있는 Overridable 멤버에 종속되지 않는지 확인합니다.