피드로 돌아가기
Dev.toBackend
원문 읽기
Fragile Base Class 문제 해결을 위한 Go의 Composition 기반 설계 전략
¿Por qué Go mató a la herencia?
AI 요약
Context
전통적인 Class Inheritance의 Is-a 관계가 유발하는 강한 Coupling과 계층 구조의 경직성 분석. 상속 구조 내 Base Class 변경 시 하위 클래스 전체에 영향을 주는 Fragile Base Class 문제로 인한 유지보수 비용 증가 해결 필요.
Technical Solution
- Embedding을 통한 Has-a 관계 기반의 Composition 구조 설계로 객체 간 유연한 결합 구현
- Anonymous Embedding 방식을 적용하여 내부 타입의 Method를 외부로 노출하는 Method Promotion 메커니즘 활용
- Interface Implicit Implementation을 통해 계약 정의와 구현체 간의 의존성을 완전히 제거한 Duck Typing 모델 채택
- Named Composition을 활용해 내부 컴포넌트를 캡슐화함으로써 Public API 오염을 방지하는 구조 설계
- 다중 Embedding 시 발생하는 Ambiguous Selector 충돌을 명시적 경로 호출(Explicit Path)로 제어하여 타입 안전성 확보
실천 포인트
- 클래스 상속 대신 Struct Embedding을 통한 기능 확장 검토 - API 공개 범위 제어를 위해 Anonymous Embedding과 Named Composition의 적절한 혼용 여부 확인 - Interface 정의 시 명시적 implements 키워드 없이 행위 기반의 최소 단위 계약 설계 적용 - 중복 Method 보유 타입 결합 시 발생 가능한 컴파일 에러(Ambiguous Selector) 대응 방안 마련