Conceptly
← 전체 목록
🏗️

Constructor

기반 원칙객체 초기 상태를 세우는 생성 루틴

생성자는 객체가 처음 만들어질 때 필요한 값을 채우고 곧바로 사용 가능한 상태로 만드는 초기화 경로입니다. 어떤 인자가 필수인지, 시작 시점에 어떤 불변 조건을 만족해야 하는지를 여기서 확정합니다.

아키텍처 다이어그램

🔄 프로세스 다이어그램

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

왜 필요한가요?

객체를 먼저 만든 뒤 여러 군데에서 값을 채우는 방식은 부분 초기화된 인스턴스를 남기기 쉽습니다. 필요한 의존성이 아직 없는데도 메서드가 먼저 호출되면 오류는 나중에 터지지만 원인은 생성 시점에 있습니다. 이런 코드는 디버깅도 어렵고 객체의 유효 상태도 흐립니다.

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

객체가 커지고 의존성이 많아지면서 어떻게 태어나느냐 자체가 설계 품질에 큰 영향을 주기 시작했습니다. 메모리만 할당했다고 곧바로 쓸 수 있는 것이 아니라 생성 순간부터 유효한 상태를 보장해야 나머지 메서드도 믿고 사용할 수 있기 때문입니다. 그래서 많은 객체지향 언어가 생성자를 초기화의 표준 경로로 둡니다.

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

런타임이 인스턴스를 위한 메모리를 준비하면 생성자가 호출됩니다. 생성자는 전달받은 인자를 검증하고, 필드를 채우고, 기본값을 넣고, 필요한 불변 조건을 맞춥니다. 이 단계가 끝나야 객체는 외부 요청을 받아도 되는 상태가 됩니다.

경계와 구분

생성자는 한 클래스의 초기 상태를 잡는 가장 직접적인 경로이고, 팩토리 메서드는 생성 과정을 감싸거나 어떤 구현체를 만들지 선택할 때 더 적합합니다. 둘 다 객체 생성을 다루지만 생성자는 어떻게 초기화할 것인가에, 팩토리는 어떤 객체를 어떤 이름으로 만들 것인가에 더 가깝습니다.

언제 쓰나요?

필수 의존성을 받는 서비스 객체, 생성 직후부터 유효해야 하는 도메인 객체, 설정 없이는 동작할 수 없는 인프라 객체에서는 생성자가 특히 중요합니다. 다만 선택 인자와 생성 분기가 계속 늘어나면 생성자 하나에 너무 많은 생성 규칙이 몰렸다는 신호로 봐야 합니다.

필수 값 강제불변 조건 확보초기화 로직 집중협력 객체 연결