Conceptly
← 전체 목록
🪜

Abstract Class

구조 패턴공통 구현과 확장 지점을 함께 가진 기반 클래스

추상 클래스는 공통 동작과 공통 상태는 상위 타입에서 제공하고 일부 단계는 하위 클래스가 구현하도록 남겨 두는 기반 클래스입니다. 인터페이스가 계약만 정의한다면 추상 클래스는 계약과 기본 구현을 함께 제공합니다.

아키텍처 다이어그램

🔍 구조 다이어그램

점선 애니메이션은 데이터 또는 요청의 흐름 방향을 나타냅니다

왜 필요한가요?

비슷한 클래스들이 같은 필드와 전처리·후처리 로직을 반복해서 들고 있으면 수정이 여러 파일로 흩어집니다. 그렇다고 모든 차이를 무시하고 하나의 큰 구체 클래스로 합치면 확장 지점과 공통 규칙이 뒤섞여 구조가 더 나빠집니다.

왜 이런 방식이 등장했나요?

프레임워크와 라이브러리는 전체 실행 흐름은 통제하면서 일부 단계만 사용자 코드가 채우게 해야 하는 상황을 자주 만납니다. 공통 흐름과 확장 지점을 한 타입 안에서 함께 표현해야 했고, 그 요구에 잘 맞는 도구가 추상 클래스였습니다.

내부적으로 어떻게 동작하나요?

추상 클래스는 공통 필드와 구현된 메서드, 그리고 하위 클래스가 반드시 채워야 하는 추상 메서드를 함께 가집니다. 상위 타입은 전체 흐름을 고정하고 하위 타입은 자신에게 맡겨진 단계만 구체화합니다. 템플릿 메서드 패턴이 대표적인 구조입니다.

경계와 구분

추상 클래스는 구현 공유가 필요할 때 강력하지만 그만큼 상속 구조에 의존하게 만듭니다. 인터페이스가 역할 계약을 얇게 분리하는 도구라면, 추상 클래스는 공통 코드 재사용까지 포함한 더 무거운 선택입니다. 공통 로직이 거의 없다면 추상 클래스보다는 인터페이스가 더 적절합니다.

언제 쓰나요?

문서 파서, 작업 실행기, UI 위젯 베이스처럼 전체 흐름은 비슷하고 일부 단계만 바뀌는 구조에 추상 클래스가 잘 맞습니다. 다만 기반 클래스가 책임을 계속 떠안기 시작하면 하위 타입은 상위 타입 내부 사정에 깊게 묶이고 변경 여지도 줄어듭니다.

템플릿 메서드 구조중복 제거프레임워크 확장 포인트도메인 계층 정리