Java 학습 경로 T2 — 객체지향 설계로 응용¶
이 트랙의 목표: T1에서 익힌 객체지향을 설계 수준으로 끌어올린다. 디자인 패턴 8종을 "외우는" 게 아니라 바뀌는 것과 안 바뀌는 것을 분리하는 도구로 쓰고, JVM이 그 코드를 어떻게 돌리는지까지 이해한다.
선수 트랙: guide-java-track1-basics. 다음 트랙: guide-java-track3-io-network.
이 트랙은 src-java-study-2024-2025 4·9장 재구성. 실제 학습·실습은 챕터 레슨에서 따라 한다 → java-study-ch04 · java-study-ch10.
이 페이지는 코스 안내다(흐름·핵심·미니프로젝트·이론 팁). 코드와 상세 설명은 위 챕터 레슨을 펴고 따라 하면 된다.
📚 학습 순서¶
1단계 — 디자인 패턴 8종 (ch04)¶
| 순서 | 문서 | 한 줄 |
|---|---|---|
| 4.0 | 전략 패턴 | 바뀌는 행위를 객체로 분리, 인터페이스에 의존 |
| 4.1 | 템플릿 메서드 | 골격은 고정, 변하는 단계만 하위에서 |
| 4.2 | 팩토리 메서드 | 객체 생성을 서브클래스에 위임 |
| 4.3 | 싱글톤 | 인스턴스 1개 보장 (스프링 빈의 기본 스코프) |
| 4.4 | 옵저버 | 상태 변화를 구독자에게 통지 |
| 4.5 / 4.6 / 4.7 | 프록시·어댑터·파사드 | 감싸기로 접근 제어·호환·단순화 |
| 4.9 | 전략 패턴 실전문제 | 🛠 아래 미니프로젝트 |
2단계 — JVM과 성능 (ch09)¶
| 순서 | 문서 | 한 줄 |
|---|---|---|
| 10.0 | JVM 개념과 구성 원리 | 클래스 로딩 → 실행 엔진 → GC (→ entity-jvm) |
| 10.1 | 메모리 관리 | 힙·스택·메서드 영역, 객체가 사는 곳 |
| 10.2 | 튜닝과 실전 활용 | GC 로그 읽기, 힙 사이즈 판단 |
🧩 핵심 개념 한눈에¶
| 개념 | 한 줄 정의 | 자주 하는 실수 |
|---|---|---|
| 전략 패턴 | 알고리즘 군을 캡슐화해 교체 가능하게 | if-else로 분기해 패턴 회피 |
| 템플릿 메서드 | 불변 골격 + 가변 훅 | 골격까지 하위에서 덮어씀 |
| 싱글톤 | 유일 인스턴스 | 직접 new 싱글톤 (스프링은 빈으로) |
| 합성 vs 상속 | "has-a"를 "is-a"보다 우선 | 코드 재사용 목적의 상속 남용 |
| GC | 도달 불가 객체 자동 회수 | "GC가 다 해주니 메모리 신경 끔" |
💡 이론·방법론 연결 (팁)¶
💡 설계 — 패턴은 목적이 아니라 결과 패턴을 먼저 정하고 끼워 맞추면 과설계가 된다. "무엇이 바뀌는가"를 먼저 찾으면 패턴은 따라온다. → 자세히: concept-design-patterns · lecture-object-ch9 (유연한 설계)
💡 설계 — 상속보다 합성 패턴 대부분이 "상속 대신 객체를 조합"으로 귀결된다. 13장의 서브타이핑/합성 판단 기준을 같이 보라. → 자세히: lecture-object-ch13 · concept-oop
💡 실무 — 싱글톤은 스프링 빈으로 4.3 싱글톤을 직접 구현하지 말고 스프링 컨테이너에 맡긴다. T4에서 이어진다. → 자세히: concept-spring-core (IoC/DI)
💡 성능 — "왜 느린가"는 JVM에서 답이 나온다 9장 GC·메모리를 알면 "객체를 너무 많이 만든다" 같은 원인을 데이터로 짚는다. → 자세히: entity-jvm · concept-db-connection-pool (풀로 객체 재사용)
🛠 미니프로젝트 — 전략 패턴으로 리팩터링¶
- 전략 패턴 실전문제 (4.9) —
if-else덩어리를 전략 객체로 분리. 새 전략 추가가 기존 코드 수정 없이 되는지 확인(OCP). - 메모 앱 토이프로젝트 (11.26-1) — 콘솔 CRUD를 먼저 완성하고, 저장 방식을 전략으로 갈아끼울 수 있게 확장.
따라하는 법:
1) 바뀌는 부분(알고리즘/정책)을 한 인터페이스로 추출
2) 구현체별 클래스 + 실패 테스트(TDD 빨강)
3) 컨텍스트가 인터페이스에만 의존하도록 (초록)
4) 분기문 제거·이름 정리 (리팩터)
5) 새 전략 1개를 "기존 코드 0줄 수정"으로 추가해 OCP 검증
✅ 트랙 정리 체크리스트¶
- 패턴 8종을 "무엇이 바뀌나" 기준으로 설명할 수 있다
-
if-else를 전략 패턴으로 바꿔봤다 - 상속과 합성을 상황에 맞게 고를 수 있다
- 힙·스택·메서드 영역에 무엇이 사는지 안다
- GC 로그에서 "객체를 너무 많이 만드는" 신호를 읽을 수 있다
- 🛠 전략 패턴 미니프로젝트로 OCP를 코드로 확인했다
→ 다 체크되면 guide-java-track3-io-network(입출력·네트워크)로.
관련 페이지¶
- src-java-study-2024-2025 — 원본 교재 (전체 카탈로그)
- concept-design-patterns — 디자인 패턴 8가지
- entity-jvm — JVM 구조·GC
- lecture-object-ch9 · lecture-object-ch13 — 유연한 설계·합성
- guide-java-track1-basics · guide-java-track3-io-network — 이전·다음 트랙