본문 바로가기

ios/pattern5

[디자인 패턴] Decorator pattern 데코레이터 패턴이란? 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브 클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다. - 위키 백과- 데코레이터 패턴은 객체 자신을 계속해서 감싸는 방식으로 객체에 추가 요소를 더하는 패턴이다. 상속을 사용하여 기능을 추가한 서브 클래스를 만들 수 있다. 하지만 상속에는 몇 가지 단점이 있다. 상속은 컴파일 시간에 기능이 결정되므로 정적인 기능 추가이고 기능이 추가될 때마다 서브 클래스를 만들어야 한다. 또한 서브 클래스가 슈퍼 클래스의 모든 기능을 상속받아야 한다. 이런 단점을 해결하는 데코레이터 패턴을 알아보자. 문제 상황 학교 앞에 덮밥 집을 개업한 A 씨는 초.. 2022. 11. 7.
[디자인 패턴] Observer pattern 옵저버 패턴이란? 옵저버 패턴이란 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 알리고 자동으로 내용을 갱신하는 방식으로 일대다(one-to-many) 의존성을 정의한다. 상태를 저장하고 있는 객체를 주제(Subject), 주제의 알림을 받는 객체를 옵저버(Observer)라고 한다. 한 개의 주제는 여러 개의 옵저버에 알림을 보낼 수 있기 때문에 일대다 관계를 갖는 것이 특징이다. 간단한 옵저퍼 패턴의 예시로 구독한 유튜브 채널에 영상이 올라왔을 때 구독자에게 알림을 보내는 과정을 생각할 수 있다. 영상이 올라올 때마다 변화하는 영상 목록의 상태를 저장하고 있는 유튜브 채널이 주제(Subject)이고 유튜브 채널을 구독하는 구독자가 옵저버(Observer)라고 할 수 있다. 옵저버 패턴 구.. 2022. 11. 2.
[디자인 패턴] Strategy pattern 전략 패턴이란? In computer programming, the strategy pattern (also known as the policy pattern) is a behavioral software design pattern that enables selecting an algorithm at runtime. Instead of implementing a single algorithm directly, code receives run-time instructions as to which in a family of algorithms to use. 위키피디아에서 전략 패턴 검색하면 전략 패턴은 행동 패턴의 하나로 런타임 과정에서 알고리즘 군에서 알고리즘 하나를 선택하여 사용할 수 있게 해준다고 한다.. 2022. 10. 10.
[아키텍쳐 패턴] Coordinator Pattern Coordinator Pattern View Controller가 오로지 View로써 책임을 갖게 만들기 위한 많은 패턴들이 있는데 Coordinator Pattern는 View Controller의 내비게이션 책임을 분리하는 패턴이다. Coordinator 구조는 App coordinator를 루트로 하는 트리이다. App coordinator는 앱의 생명주기를 따르기 때문에 app coordinator에서 로그인 유무에 따라 초기 앱 화면을 결정한다. View Controller는 coordinator가 보여줄 화면이다. 따라서 view controller는 항상 리프에 있다. 그래서 SignIn VC에서 Home VC로 이동하기 위해서는 두 개의 view Controller의 최소 공통 조상 coo.. 2022. 7. 25.
[아키텍쳐 패턴] VIPER Pattern 역할 View MV(X)의 View와 역할이 똑같이 UI를 그려주는 역할을 한다. 보통 UI로 시작하는 객체이다. (ex UIViewController, UIView 등 ) Entity MVC에서 Model과 동일하다. 데이터 객체를 말한다. UI와 분리된 상태이다. Interactor 데이터(Entity)와 관련된 비즈니스 로직, 네트워크 통신 로직을 가지고 있다. UI와 분리된 상태이다. Presenter UI와 관련된 비즈니스 로직을 가지고 있다. (UIKit과는 독립이다.) MVC에서 view의 액션을 view controller에서 처리했다면 VIPER에서는 view는 단순히 UI를 그리는 역할만 하고 View의 액션은 Presenter가 담당한다. 또한 view가 필요로 하는 데이터를 inte.. 2022. 6. 29.