34 lines
2.4 KiB
Markdown
34 lines
2.4 KiB
Markdown
---
|
|
id: [[P-Reinforce|P-Reinforce]]-AUTO-OODP-001
|
|
category: Dev
|
|
confidence_score: 0.97
|
|
tags: [auto-reinforced, software-engineering, oop, [[Architecture|Architecture]]]
|
|
last_reinforced: 2026-04-20
|
|
---
|
|
|
|
# [[Object-Oriented-Design-Patterns|Object-Oriented-Design-Patterns]]
|
|
|
|
## 📌 한 줄 통찰 (The Karpathy Summary)
|
|
> "검증된 설계의 악보: 클래스와 객체 간의 관계를 구조화하여 변경에는 유연하고 확장에는 열려 있는 소프트웨어를 만드는 23개 이상의 고전적 해법."
|
|
|
|
## 📖 구조화된 지식 (Synthesized Content)
|
|
객체지향 디자인 패턴(OODP)은 1994년 GoF(Gang of Four)에 의해 정립된, 객체지향 설계에서 자주 발생하는 문제들에 대한 모범 사례(Best Practices)입니다.
|
|
|
|
1. **3대 분류**:
|
|
* **생성 패턴 (Creational)**: 객체 생성 방식을 추상화 (Singleton, Factory Method, Abstract Factory, Builder, Prototype).
|
|
* **구조 패턴 (Structural)**: 클래스/객체를 더 큰 구조로 조합 (Adapter, Composite, Decorator, Facade, Proxy).
|
|
* **행위 패턴 ([[Behavior|Behavior]]al)**: 객체 간의 알고리즘 및 책임 분배 (Observer, [[Strategy|Strategy]], [[State|State]], Command, Visitor, Mediator).
|
|
2. **핵심 철학 (SOLID & Composition Over Inheritance)**:
|
|
* 상속보다는 구성을 사용하고, 구현이 아닌 인터페이스에 맞춰 프로그래밍 함.
|
|
3. **패턴의 가치**:
|
|
* 개발자 간의 공통 언어 제공, 코드 재사용성 증대, 유지보수 비용 절감.
|
|
|
|
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
|
- **과거 데이터와의 충돌**: 과거에는 '싱글톤(Singleton)'을 만능 도구처럼 썼으나, 현재는 전역 상태를 만들어 단위 테스트를 어렵게 만드는 '안티 패턴'으로 지목되기도 함 (의존성 주입-DI로 대체 권장).
|
|
- **정책 변화(RL Update)**: 현대의 함수형 프로그래밍(FP) 패러다임이 확산되면서, 복잡한 상태 패턴이나 전략 패턴 대신 단순한 고차 함수(Higher-order functions)를 사용하는 '패턴의 경량화' 정책이 선호됨.
|
|
|
|
## 🔗 지식 연결 (Graph)
|
|
- **Related**: Design Patterns, Clean Code, [[Separation_of_Concerns|Separation_of_Concerns]], Software Architecture, [[Component_Design_Patterns|Component_Design_Patterns]]
|
|
- **Modern Tech/Tools**: InversifyJS (DI), Reactive Extensions (Observer).
|
|
---
|