Software design pattern 을 읽고 정리한 글입니다
1. 정의
“특정한 상황에서, 일반적인 설계 문제를 해결하기 위해 상호 교류하는 수정 가능한 객체와 클래스들에 대한 기술”
즉 소프트웨어를 문제와 해결책을 위해 자주 사용하는 구조적 형태로 체계화 시키는 것을 말한다.
2. 특징
코드의 수준을 높인다. 클래스의 개수를 줄여준다.
좋은 설계와 아키텍처를 패턴화 해서 이름만으로도 구조를 파악하고 따라 적용할 수 있게 해준다.
한마디로 말하자면 재사용성을 높인다.
❔❓ 재사용성?
- 어떤 클래스를 만들지
- 어느 시점에 객체를 생성하고 소멸 시킬지.
- 데이터를 어떻게 받고 처리할 지
- 구조 설계를 어떻게 할 지 등등 ...
3. 목적
생성 / 구조 / 행위
4. 객체 디자인 패턴의 종류
1️⃣ 싱글턴 패턴 (Singleton Pattern)
- 특정 클래스에 대한 인스턴스가 오직 하나임을 보장하고, 여기에 접근할 수 있도록 해준다.
- 목적: 생성
- iOS 애플리케이션 내 예시들
- UIApplication 객체 (앱 전체에서 유일함)
- File Manager (파일에 대한 접근을 도와줌)
- Notification Center 객체
- User Defaults 객체 (앱 내 설정과 같은 데이터 지속성이 필요한 정보들)
- URLSession 객체 (네트워크 통신에 사용)
2️⃣ 퍼사드 패턴 (Facade Pattern)
- 서브 시스템의 가장 앞쪽에 위치하며 (= 구조화하며),
안쪽에 있는 객체들을 사용할 수 있도록 해준다. (= 접근 권한을 가진다)
- 목적: 구조
3️⃣ 옵저버 패턴 (Observer Pattern)
- 관찰자들의 목록을 객체에 등록시켜서,
상태 변화가 있을 때마다 메서드 같은 것들을 통해서 객체가 직접 관찰자들에게 통지할 수 있게 해준다.
- 목적: 행위
4️⃣ 스트래티지 패턴 (Strategy Pattern)
- 알고리즘을 담당하는 클래스들에게로 책임을 분산시켜준다.
- 목적: 행위
5️⃣ 팩토리 패턴 (Factory Pattern)
- 객체를 생성하기 위한 인터페이스는 정의만 해두고, 그 결정은 하위 클래스에서 이뤄지도록 책임을 분산시켜준다.
- 목적: 생성
6️⃣ 어댑터 패턴 (Adapter Pattern)
- 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환시켜준다.
- 목적: 구조
5. 마무리
- 디자인 패턴은 잘 사용하면 정말 유용하지만, 어떤 상황에 / 어떻게 사용할 지 고민을 많이 해보고 잘 적용하는 것이 중요하다.
- 이어서 보면 좋은 게시글: MVC란? (작성 예정...)
'공부 > computer science' 카테고리의 다른 글
JPEG vs PNG (0) | 2022.03.17 |
---|---|
Encoding (0) | 2022.03.14 |
비동기 프로그래밍 방식에 대해 알아보자 (2) | 2022.02.01 |
difference of OOP and Functional Programming (0) | 2021.08.27 |
Pure ALOHA (1) | 2021.02.14 |
댓글