본문 바로가기

Design Pattern11

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 - 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.
iOS: Repository pattern in Swift [출처] iOS: Repository pattern in Swift A design pattern to abstract data sources from your application medium.com Repository Pattern 리포지토리 패턴은 디자인 패턴으로 데이터의 추상화를 제공하여 어플리케이션이 추상화된 인터페이스로 작업할 수 있게 해준다. 즉 데이터 출처에 관계없이 동일한 인터페이스로 어플리케이션이 데이터를 사용할 수 있게 해준다. 장점으로는 결합도를 낮출 수 있다. 도메인 객체를 persistence ignorant 하게 할 수 있다. 정의된 인터페이스를 구현하는 mock에 DI 할 수 있으므로 테스팅하기 쉽다. 글에서 작성된 예시를 보자면 Tiendo iOS 앱에서 리포지토리 패턴을 .. 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 - 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.
iOS - MVVM Simple look [원문] MVVM in iOS Reduce the size of your massive view controller by moving logic into the view model medium.com 로직부분을 viewmodel 로 옮겨 MVC(Massive view controller) 의 크기를 줄이자. 기본 iOS 아키텍쳐 패턴은 MVC(Model View Controller) 이다. MVC패턴이 잘못된 것은 아니지만 개발하다 보면 view controller의 코드량이 많아진다. MVVM은 .NET 커뮤니티에서 주로 몇년째 사용되었다. .NET WPF 프레임워크와 iOS 프레임워크는 다르다.(WPF는 XAML을 통해 two-way seamless binding 을 지원한다) iOS는 그런거 없고 .. 2020. 4. 22.