객체지향 설계 원칙 (SOLID 원칙) 및 디자인 패턴 정리

현재 작성중인 글입니다.


객체지향 설계 원칙 (SOLID 원칙)

단일 책임 원칙 (SRP)

클래스는 하나의 책임만 가져야 합니다. 각 클래스는 여러 함수를 가질 수 있지만, 하나의 역할을 수행해야 합니다.

단일 책임 원칙 위반 예시
한 클래스에 DB 저장, 이메일 전송, 로그 출력 등 여러 역할의 함수가 작성된 경우
각 기능 변경 시 클래스 전체가 수정되어 다른 기능에 영향받을 수 있어 SRP 위반입니다.
그 결과, 유지보수 및 재사용이 어렵고 변경에 취약한 코드가 됩니다.

개발-폐쇄 원칙 (OCP)

각 클래스가 확장에는 열려있고, 변경에는 닫혀 있어야 합니다.

리스코프 치환 원칙 (LSP)

자식 클래스는 부모 클래스로 교체 가능해야 합니다.

인터페이스 분리 원칙 (ISP)

특정 클라이언트를 위한 인터페이스는 최소한으로 제공해야 합니다.

의존 역전 원칙 (DIP)

고수준 모듈은 저수준 모듈에 의존하면 안 되고, 둘 다 추상화 클래스에 의존해야 합니다.


디자인 패턴 > 생성 패턴

싱글톤 패턴

팩토리 메서드 패턴

추상 팩토리 패턴

빌더 패턴

프로토타입 패턴


디자인 패턴 > 구조 패턴

어댑터 패턴

브리지 패턴

컴포지트 패턴 (복합체 패턴)

데코레이터 패턴

퍼사드 패턴

플라이웨이트 패턴

프록시 패턴


디자인 패턴 > 행위 패턴

책임 연쇄 패턴

커맨드 패턴

인터프리터 패턴

이터레이터 패턴 (반복자 패턴)

미디에이터 패턴 (중재자 패턴)

메멘토 패턴

옵서버 패턴 (관찰자 패턴 / 발행-구독 패턴)

상태 패턴

전략 패턴

템플릿 메서드 패턴

비지터 패턴 (방문자 패턴)


도메인 주도 설계 (DDD)

명세 패턴