본문 바로가기
공부/computer science

프로그래밍 디자인 패턴에 대해 알아보자

by 마자용 2022. 1. 28.
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

댓글