최신 글
기술과 일상을 함께 기록합니다.
1. 비즈니스 도메인 분석
사업 목표를 하위 도메인으로 나누고, 차별화 가치에 따라 설계와 투자 우선순위를 정하는 방법
도메인 주도 설계(DDD : Domain-Driven Design)
주문·결제·배송 예제로 유비쿼터스 언어, 바운디드 컨텍스트, 애그리거트의 역할과 전략·전술 설계의 연결을 설명한다.
애그리거트
주문 총수량 10개 제한을 애그리거트 루트에서 지키는 과정을 따라가며 경계 크기, 외부 참조, 동시 수정 충돌을 어떻게 다룰지 살펴본다.
도메인 모델
배송지 변경 규칙을 가진 주문 예제로 엔티티와 값 객체의 차이를 설명하고, 애그리거트·리포지터리·도메인 서비스의 책임 경계를 짚는다.
객체지향 연관 관계
주문·고객·주문 항목 관계를 통해 탐색 방향과 다중성을 읽고, 양방향 참조의 일관성 비용과 삭제 전파를 설계할 때 확인할 규칙을 살펴본다.
Iterator Pattern(반복자 패턴)
배열 기반 Shelf 반복자를 직접 구현하며 커서 이동과 용량 증가, 끝에서의 예외, 순회 중 컬렉션 변경 정책을 단계별로 확인한다.
Observer Pattern(관찰자 패턴)
한 객체의 이벤트를 여러 관찰자에게 알리는 구조와 동기 호출·오류 전파·구독 해제 시 주의할 점을 살펴본다.
Template Method Pattern(템플릿 메서드 패턴)
출력 순서를 고정한 템플릿 메서드 예제로 공통 알고리즘과 가변 단계를 분리하고, 상속이 적합한 조건과 정리 단계의 예외 처리를 검토한다.
Adapter Pattern
기존 Banner와 Print 인터페이스를 연결하는 상속형·위임형 어댑터를 비교하고, 메서드 이름뿐 아니라 값과 오류 의미까지 맞춰야 하는 이유를 설명한다.
Iterator Pattern
책장 예제로 Java Iterable·Iterator의 순회 계약을 따라가며 제네릭 타입, 다음 원소 부재, 순회 중 변경 정책을 검토한다.
Singleton Pattern
Java의 Holder 방식으로 지연 초기화 싱글턴을 구현하고 클래스 로더 범위의 유일성, 가변 전역 상태의 동시성·테스트 비용을 살펴본다.
객체지향 프로그래밍
주문 수량 규칙과 배송비 정책 예제로 캡슐화·다형성이 상태 변경을 어떻게 통제하는지 살펴보고, 상속과 합성을 선택하는 기준을 설명한다.