diff --git "a/ryongtai/13.\354\213\244\354\240\204_\355\214\250\355\204\264.md" "b/ryongtai/13.\354\213\244\354\240\204_\355\214\250\355\204\264.md"
new file mode 100644
index 0000000..245d3cf
--- /dev/null
+++ "b/ryongtai/13.\354\213\244\354\240\204_\355\214\250\355\204\264.md"
@@ -0,0 +1,311 @@
+# 13장 실전 디자인 패턴
+
+## 패턴의 정의
+
+
+
+### 1. 컨텍스트
+
+패턴이 적용되는 상황
+
+- 같은 패턴이라도 상황이 다르면 적용 방식이 달라짐.
+- 예를 들어, 옵저버 패턴이 GUI 이벤트에서 쓰일 때와 분산 시스템 메시지 큐에서 쓰이는 맥락이 다름
+
+### 2. 반복적 문제
+
+한 번 나타난 문제는 패턴이 아님
+
+- 여러 프로젝트, 여러 도메인에서 반복적으로 나타나는 문제여야 함.
+- Rule of Three → 최소 세 번 이상 독립적으로 검증되어야 패턴으로 인정
+
+### 3. 검증된 해결책
+
+단순 아이디어가 아니라, 실전에서 효과가 입증된 해결책
+
+- 패턴은 발명되는 것이 아니라 발견되는 것
+
+---
+
+## 패턴 분류 체계
+
+### 목적에 따른 분류
+
+#### 1. 생성 패턴 (Creational)
+
+- 객체를 어떻게 만드는가
+- 생성 과정을 캡슐화해서 시스템이 구체 클래스에 의존하지 않게 함.
+- 팩토리 메서드, 추상 팩토리, 싱글턴, 빌더, 프로토타입
+
+#### 2. 구조 패턴 (Structural)
+
+- 객체를 어떻게 조합하는가
+- 클래스나 객체를 더 큰 구조로 엮는 방법
+- 어댑터, 퍼사드, 데코레이터, 프록시, 컴포지트, 브리지, 플라이웨이트
+
+#### 3. 행동 패턴 (Begavioral)
+
+- 객체가 어떻게 소통하고 책임을 분배하는가
+- 알고리즘 객체 간 책임 할당
+- 전략, 옵저버, 커맨드, 템플릿 메서드, 반복자, 상태, 비지터, 중재자, 메멘토, 책임 연쇄, 인터프리터
+
+### 범위에 따른 분류
+
+#### 클래스 패턴
+
+- 상속으로 해결
+- 컴파일 타임에 결정
+- 템플릿 메서드, 팩토리 메서드, 어댑터
+
+#### 객체 패턴
+
+- 컴포지션으로 해결
+- 런타임에 변경 가능
+- 나머지 대부분
+
+---
+
+## 부록 - 1
+
+### Q1) 클래스 자주 쓰지도 않는데, 범위에 따른 분류를 왜 알아야 함?
+
+#### 클래스 패턴
+
+- 템플릿 메서드 - 상위 클래스가 알고리즘 흐름을 고정, 하위 클래스가 단계를 오버라이드
+- 팩토리 메서드 - 상위 클래스가 생성 인터페이스 정의. 하위 클래스가 구체 생성을 결정
+
+→ 상속 계층을 전제, 하지만 FE에서 상속을 쓰는 경우는 거의 없음
+
+#### 메커지늠은 바뀌었지만 문제는 남음
+
+- 템플릿 메서드 → “흐름은 고정하고, 변하는 부분만 교체하고 싶어”
+
+ ```tsx
+ // 상속
+ abstract class DataFetcher {
+ fetch() {
+ this.validate() // 고정
+ this.transform() // 오버라이드
+ this.save() // 오버라이드
+ }
+ }
+
+ // 함수형 — 같은 문제, 다른 메커니즘
+ function useFetchData(
+ fetcher: () => Promise, // 변하는 부분을 인자로
+ onSuccess?: (data: T) => void, // 변하는 부분을 인자로
+ ) {
+ // 흐름은 고정
+ useEffect(() => {
+ setLoading(true)
+ fetcher()
+ .then(data => { setData(data); onSuccess?.(data) })
+ .catch(setError)
+ .finally(() => setLoading(false))
+ }, [])
+ }
+ ```
+
+ → 상속이 고차 함수 / 콜백 / 훅의 인자로 대체. 문제와 의도는 동일
+
+- 팩토리 메서드 → “무엇을 생성할지를 하위에서 결정하고 싶음”
+
+ ```tsx
+ // 상속
+ abstract class Dialog {
+ abstract createButton(): Button
+ render() {
+ const btn = this.createButton()
+ btn.render()
+ }
+ }
+
+ // 함수형 — 컴포넌트 합성으로 해결
+ function Dialog({ renderButton }: { renderButton: () => ReactNode }) {
+ return