본문 바로가기

iOS/Design Pattern13

복합체 패턴 발표자료 2021. 6. 8.
Design Pattern - Adapter Pattern Adapter Pattern Adapter pattern은 행위 패턴으로 상호 호환이 안되는 타입을 연결해 주는 패턴이다. 4개의 부분이 있다. Adapter를 사용하는 객체: 새로운 프로토콜에 의존하는 객체 새로운 프로토콜: 사용을 위해 필요한 프로토콜 legacy Object: 프로토콜이 만들어 지기 전에 원래 있던 객체, 수정될 수 없고 직접적으로 integrate 할 수 없는 객체 Adapter: 프로토콜을 준수하면서 legacy object 와 상호작용 하기 위해 만들어진 객체 실물의 어댑터의 가장 좋은 예시는 아이폰이다. 3.5mm 헤드폰 단자가 없어서 어댑터를 통해 라이트닝 단자에 연결해야 한다. 두개의 요소를 알맞게 연결해 주는 것이 Adapter Pattern 의 핵심이다. 안드로이드에서.. 2020. 8. 30.
Design Pattern - Factory Pattern Factory Pattern 팩토리 패턴은 creation pattern으로 객체를 만들때 creation logic을 노출하지 않고 만들 수 있는 기법이다. 팩토리 패턴은 두가지 타입이 있다. Factory: object 를 만드는 역할 Product: 만들어진 객체들 정확하게는 이 패턴은 여러가지 하위 종료가 있는데 예를들어 simple factory, abstract factory 등이 있다. 하지만 이것들은 한가지 공통의 목표인 객체 생성 로직을 분리시켜 자체 구성 내에 있도록 하는 것이다 Factory Pattern 은 언제 사용해야 할까? 제품 생성 로직을 분리하고 싶을때 (소비자가 직접 제품을 생산하는게 아닌) 같은 프로토콜을 준수하는 여러개의 연관된 subclasses이나 objects을 .. 2020. 8. 25.
Design Pattern - Model View ViewModel Pattern 중급(책에 따르면) 디자인 패턴 시작이다. 이전까지 배운 기초 패턴은 다음과 같다. MVC Delegation Strategy Singleton Memento Observer Builder 어떤 패턴인지 알고 사용한 경우도 있었고 코드 컨벤션인줄 알고 아 이렇게 쓰나보다하고 썼던 코드가 디자인 패턴이였구나 알게된 경우도 있었고 써보지도 않았고 처음 알게된 경우도 있었다. 그럼 중급 패턴으로 한번 가보자 MVVM - Model View ViewModel MVVM은 각각의 객체들을 3가지 그룹으로 나누는 Structural design pattern 이다. Model: 앱 데이터를 담고있다. 대부분 구조체이거나 단순한 class 로 구성된다. Views: 시각적인 요소와 스크린의 control를 담당한다. .. 2020. 8. 24.
Design Pattern - Builder Pattern Builder Pattern 복잡한 Object 에 대해 initializer에서 필요한 모든 input을 입력하지 않고 단계별로 input을 줄 수 있게 한다. 빌더 패턴은 3가지 부분으로 나눠진다. director: input 을 accept 하고 builder 와 coordinate 한다. 대부분 view controller에 의해 사용되는 view controller 나 helper class 가 담당한다. product: 생성하기 힘든 복잡한 객체이다. struct 나 class 가 될 수 있고 대부분 model 역할이다. 그런데 use case 에 따라 아무 타입이나 다 될 수 있다. builder: 단계별로 input을 받고 product 의 생성을 처리한다. 대부분 class 이고 refe.. 2020. 8. 9.
Design Pattern - Observer Pattern Observer Pattern Observer 패턴은 하나의 Object 가 다른 Object의 변화를 관찰 할 수 있는 패턴이다. Apple 은 이 패턴을 Swift5.1에 언어수준에서 RxSwift 와 비슷한 Publisher 와 Combine 프레임워크를 통해서 공식적으로 지원하는 패턴으로 추가하였다. 패턴은 세가지 타입을 포함한다. subscriber: 변경된 사항에 대해 업데이트를 받는 관찰자 object publisher: observable(관찰가능한) object, 변경되면 업데이트를 subscriber 에게 알려줌 value: 객체의 변경된 값 Observer Pattern - 언제 사용해야 할까 다른 객체의 변경사항을 알고 싶을때 MVC 패턴에서 주로 쓰인다. Subscriber: vi.. 2020. 8. 9.
Design Pattern - Memento Pattern Memento Pattern 메멘토 패턴 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 메멘토 패턴(memento pattern)은 객체를 이전 상태로 되돌릴 수 있는 기능을 제공하는 소프트웨어 디자인 패턴이다. (롤백을 통한 �� ko.wikipedia.org 메멘토 패턴은 Object를 저장하거나 불러오게 할 수 있다. 3가지 부분으로 나눠진다. Originator: 저장되어야 할 객체이다. memento: 저장된 상태를 나타낸다. CareTaker: - save: careTaker는 originator에게 저장을 요청하고 memento 로부터 응답을 받는다. - restore: memento를 유지하는 역할을 담당하며 추후에 originator .. 2020. 8. 9.
Design Pattern - Singleton Pattern Singleton Pattern - 싱글톤 패턴 class 가 하나의 instance 만 가지도록 제한한다. 모든 class 에 대한 reference 는 하나의 같은 class 에 대한 instance를 참조한다. (Single) iOS 앱 개발에서 겁나 자주 쓰이고 Apple 이 광범위하게 쓴다. 다른 instance 를 생성하는 shared singleton instance를 제공하는 Singleton Plus 패턴도 자주 쓰인다. Singleton Pattern 언제 사용해야 할까? 하나 이상의 동일 class 의 instance 를 가지게 되면 문제가 생길때 로직상으로 하나 이상의 동일 class 에 대한 instance 를 가지면 안될때 Singleton Plus Pattern 언제 사용해야 .. 2020. 8. 9.
Design Pattern - Strategy Pattern Strategy Pattern Strategy Pattern 은 런타임에 set 되거나 switch 될 수 있는 interchangeable 한 객체의 집합을 정의한다. Who (Object Using a Strategy): interchangeable 해야 하는 객체가 담당할 수 있다. iOS 앱에서 이 부분은 view controller 가 담당한다. What (strategy protocol): 모든 strategy 가 반드시 구현해야할 메소드를 정의한다. How (Strategies): strategy protocol 을 준수하는 객체들이다. 언제 사용해야 할까 두개 이상의 다른 behavior이 interchangeable 해야 할 때 사용한다. 이 패턴은 delegation pattern 과 .. 2020. 8. 7.
Design Pattern - Delegation Pattern Delegate: 대리자 Delegation Pattern 은 한 객체가 다른 Helper 객체를 통해 데이터를 전송하거나 특정 업무를 대신 할 수 있게 해주는 패턴이다. (Delegation Pattern enables an object to use another "Helper" Object to provide data or perform a task rather than do the task itself) Delegation Pattern 의 3가지 부분 Object needing a delegate: delegating object 라고도 한다. Delegate 를 가진 객체를 말하며 delegating 객체가 delegate 를 retain 할때 발생할 수 있는 retain cycle 을 피하기 .. 2020. 8. 6.
Design Pattern - MVC MVC Class Diagram Model: 앱 데이터를 가지도 있다. struct 나 간단한 class 로 구성된다. Views: 시각적인 요소들과 화면을 담당한다. UIView 의 Subclass 이다. Controllers: model 과 view를 통합시킨다. Controller 는 model 과 view의 string properties를 가져 직접 access가 가능하다. 또한 하나 이상의 view와 model 을 가질 수 있다. 반대로 model 과 view 들은 controller 에 대한 string reference 가 없어 retain cylce의 문제가 발생할 수 있다. 대신에 model 은 property observing 을 통해 controller 와 통신한다. view 는 I.. 2020. 7. 14.
Design Pattern - Class Diagram 2020. 7. 14.
Design Pattern - Introduction 디자인 패턴은 Design Patterns: Elements of Reusable, Object-Oriented Software 라는 책에서 처음 다뤄졌다. 흔히 발생하는 소프트웨어 개발 문제에 대한 재사용 가능한 템플릿 솔루션을 다웠다. 디자인 패턴은 어떤 특정 상황이 아닌, 문제 상황에서 해결을 위해 차용할 수 있는 솔루션인 것이다. not concrete implementation (정확히 정해진 완벽한? 규격? 이 없다) -> serve as starting points for writing code (디자인 패턴을 뼈대로 시작하는 것) 디자인 패턴 3가지 종류 Structural design pattern: 큰 구조를 위해 어떻게 object가 결합 되는지 설명한다. 예를들어 MVC, MVVM,.. 2020. 7. 14.