콘텐츠로 이동

Java 학습 경로 T2 — 객체지향 설계로 응용

이 트랙의 목표: T1에서 익힌 객체지향을 설계 수준으로 끌어올립니다. 디자인 패턴 8종을 "외우는" 게 아니라 바뀌는 것과 안 바뀌는 것을 분리하는 도구로 씁니다.

선수 트랙: guide-java-track1-basics. 다음 트랙: guide-java-track3-io-network.

이 트랙은 src-java-study-2024-2025의 ch04(디자인 패턴)를 재구성한 것입니다. 실제 학습·실습은 챕터 레슨에서 따라 합니다 → java-study-ch04. JVM과 성능(ch10)은 guide-java-track5-deep-dive에서 다룹니다.

이 페이지는 코스 안내입니다(흐름·핵심·미니프로젝트·이론 팁). 코드와 상세 설명은 위 챕터 레슨을 펴고 따라 하면 됩니다.


📚 학습 순서

디자인 패턴 8종 (ch04)

순서 문서 한 줄
4.0 전략 패턴 바뀌는 행위를 객체로 분리, 인터페이스에 의존
4.1 템플릿 메서드 골격은 고정, 변하는 단계만 하위에서
4.2 팩토리 메서드 객체 생성을 서브클래스에 위임
4.3 싱글톤 인스턴스 1개 보장 (스프링 빈의 기본 스코프)
4.4 옵저버 상태 변화를 구독자에게 통지
4.5 / 4.6 / 4.7 프록시·어댑터·파사드 감싸기로 접근 제어·호환·단순화
4.9 전략 패턴 실전문제 🧪 아래 트랙 마무리

🧩 핵심 개념 한눈에

개념 한 줄 정의 자주 하는 실수
전략 패턴 알고리즘 군을 캡슐화해 교체 가능하게 if-else로 분기해 패턴 회피
템플릿 메서드 불변 골격 + 가변 훅 골격까지 하위에서 덮어씀
싱글톤 유일 인스턴스 직접 new 싱글톤 (스프링은 빈으로)
합성 vs 상속 "has-a"를 "is-a"보다 우선 코드 재사용 목적의 상속 남용

💡 이론·방법론 연결 (팁)

💡 설계 — 패턴은 목적이 아니라 결과 패턴을 먼저 정하고 끼워 맞추면 과설계가 됩니다. "무엇이 바뀌는가"를 먼저 찾으면 패턴은 따라옵니다. → 자세히: concept-design-patterns · lecture-object-ch9 (유연한 설계)

💡 설계 — 상속보다 합성 패턴 대부분이 "상속 대신 객체를 조합"으로 귀결됩니다. 『오브젝트』 13장의 서브타이핑/합성 판단 기준을 같이 보세요. → 자세히: lecture-object-ch13 · concept-oop

💡 실무 — 싱글톤은 스프링 빈으로 4.3 싱글톤을 직접 구현하지 말고 스프링 컨테이너에 맡깁니다. T4에서 이어집니다. → 자세히: concept-spring-core (IoC/DI)


🧪 트랙 마무리 — 과제 1. 주문 처리 콘솔 앱

이 트랙에서 배운 인터페이스·다형성·전략 패턴을 guide-java-practice-core에서 프로젝트 하나로 확인합니다. 컬렉션·스트림(T1 복습), 전략·옵저버 패턴, 직접 만드는 미니 IoC 컨테이너를 주문 처리 콘솔 앱으로 엮고, 테스트 13개로 스스로 채점합니다. 새 결제 수단을 "기존 코드 0줄 수정"으로 추가하는 단계에서 OCP를 코드로 확인합니다.

보충 연습 (챕터 실전문제, 시간이 남으면):

  • 4.9 전략 패턴 실전문제 — if-else 덩어리를 전략 객체로 분리 → java-study-ch04
  • 11.26-1 메모 앱 — 저장 방식을 전략으로 갈아끼우도록 확장 → java-study-ch11

✅ 트랙 정리 체크리스트

  • 패턴 8종을 "무엇이 바뀌나" 기준으로 설명할 수 있습니다
  • if-else를 전략 패턴으로 바꿔봤습니다
  • 상속과 합성을 상황에 맞게 고를 수 있습니다
  • 🧪 과제 1을 완성하고 새 결제 수단 추가로 OCP를 코드로 확인했습니다

→ 다 체크되면 guide-java-track3-io-network(입출력·네트워크)로 넘어갑니다.


관련 페이지