Files
2nd/10_Wiki/Topics/AI/Object-Oriented-Design-Patterns.md
T

2.4 KiB


id: P-Reinforce-AUTO-OODP-001 category: "10_Wiki/💡 Topics/AI" confidence_score: 0.97 tags: [auto-reinforced, software-engineering, oop, Architecture] last_reinforced: 2026-04-20

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).
    • 행위 패턴 (Behavioral): 객체 간의 알고리즘 및 책임 분배 (Observer, Strategy, State, Command, Visitor, Mediator).
  2. 핵심 철학 (SOLID & Composition Over Inheritance):
    • 상속보다는 구성을 사용하고, 구현이 아닌 인터페이스에 맞춰 프로그래밍 함.
  3. 패턴의 가치:
    • 개발자 간의 공통 언어 제공, 코드 재사용성 증대, 유지보수 비용 절감.

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 과거에는 '싱글톤(Singleton)'을 만능 도구처럼 썼으나, 현재는 전역 상태를 만들어 단위 테스트를 어렵게 만드는 '안티 패턴'으로 지목되기도 함 (의존성 주입-DI로 대체 권장).
  • 정책 변화(RL Update): 현대의 함수형 프로그래밍(FP) 패러다임이 확산되면서, 복잡한 상태 패턴이나 전략 패턴 대신 단순한 고차 함수(Higher-order functions)를 사용하는 '패턴의 경량화' 정책이 선호됨.

🔗 지식 연결 (Graph)