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(입출력·네트워크)로 넘어갑니다.
관련 페이지¶
- src-java-study-2024-2025 — 원본 교재 (전체 카탈로그)
- concept-design-patterns — 디자인 패턴 8가지
- lecture-object-ch9 · lecture-object-ch13 — 유연한 설계·합성
- guide-java-track1-basics · guide-java-track3-io-network — 이전·다음 트랙