1. SOLID 원칙
- SRP (단일 책임 원칙)
- 각 클래스는 하나의 책임만 갖도록 하는 원칙
- OCP (개방-폐쇄 원칙)
- 어떠한 기능을 추가할 때 확장이 가능하지만 기존 코드가 수정되지 않아야 하는 원칙
- LSP (리스코프 치환 원칙) : 자식 클래스가 부모 클래스의 역할로 대체될 때에도 정삭적으로 동작하여야 하는 원칙
- 자식 클래스를 구현할 때 부모클래스가 수정되면 안된다.
- 부모 클래스가 수정되면 다른 자식 클래스의 기능이 변경된다.
- ISP (인터페이스 분리 원칙)
- 불필요한 메서드 의존성을 줄이기 위한 필요한 메서드만 의존할 수 있는 인터페이스를 설계한다.
- 의존성이 높아지면 코드 수정이 힘들다.
- DIP (의존성 역전 원칙)
- 구체적인 클래스가 아닌 인터페이스나 추상 클래스에 의존하는 원칙
- ex) 오리1 = new 청둥 오리, new 고무 오리
2. RAII (Resource Acqusition is initialization)
- 객체가 생성될 때 리소스를 획득하고 객체가 소멸될 때 자동으로 리소스를 반환한다.
- ex) 스마트 포인터, std::lock_guard
3. 불변성 (Immutability)
- 객체 상태를 가능한 불변으로 유지하여 코드의 안정성과 예측 가능성을 높인다.
- ex) 변수나 함수에 const 키워드를 사용하여 불변으로 설정한다.
4. 템플릿과 제네릭 프로그래밍
- 템플릿 기반 설계로 코드 재사용성 극대화
- ex) TArray<int32>
5. 컴포지션 (Composition)
- "has-a" 관계를 통해 객체를 구성하는 방식으로 설계한다.
- 상속에 비해 코드 복잡성이 낮아 유지 보수가 편리하다.
- 요즘에는 상속대신 클래스 안에 객체를 포함하여 기능을 추가한다. (컴포넌트들)
'Design Pattern' 카테고리의 다른 글
| [Design Pattern] 전략 패턴 (0) | 2025.04.02 |
|---|---|
| [Design Pattern] 디자인 패턴 (0) | 2025.04.01 |
| [DesignPattern] 모던 객체지향 설계 - 활용 예시 (0) | 2025.04.01 |
| [DesignPattern] 모던 객체지향 설계 - 객체지향의 기본 원칙 (0) | 2025.03.31 |
| [DesignPattern] 디자인 패턴 (1) | 2025.01.08 |