일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 스위프트
- 리팩토링
- UICollectionView
- Refactoring
- ios
- RxCocoa
- Xcode
- Protocol
- 클린 코드
- tableView
- Observable
- Clean Code
- map
- swiftUI
- combine
- 리펙터링
- SWIFT
- swift documentation
- Human interface guide
- collectionview
- uiscrollview
- clean architecture
- MVVM
- 리펙토링
- HIG
- UITextView
- ribs
- rxswift
- uitableview
- 애니메이션
- Today
- Total
목록Design Pattern (디자인 패턴) (4)
김종권의 iOS 앱 개발 알아가기
어댑터 패턴 (Adapter, Wrapper) 현재 A 기능을 사용중일때 이와 유사한 B, C 기능이 계속 생겨나면서, B, C 인터페이스도 A와 동일하게 만드는 것을 목적으로 A의 프로토콜을 준수하는 BAdapter, CAdapter로 만들어서 사용하는쪽에서 코드의 변경을 최소화 하는 방법 가장 대표적인 예는, AuthService를 만들어 놓았을때, 네이버 로그인 및 카카오 로그인이 생겨나면서 이 것들의 인터페이스를 기존의 AuthService와 동일하게 하는 Adapter구현체를 만드는 방법 왜 Adapter 패턴을 사용하는가? 서비스를 사용하는 코드 레이어에서 최소한의 변경사항으로 확장성 있는 기능을 추가하기 위함 코드의 중복을 막을 수 있는 방법 Adapter 패턴의 예시 현재 AuthServi..
사전지식) 브릿지 패턴에서의 추상화와 구현 개념 추상화: (=인터페이스) 일부 개체(entity)에 대한 상위 수준의 제어 레이어 이 레이어는 자체적으로 실제 작업을 수행하지 않고, 구현 레이어(구체클래스)에 위임 브릿지 패턴 한 클래스안에 너무 많은 기능들과 여러 요소들이 있는 상태이고 이 클래스를 리팩토링 하고 싶은 경우? -> 브릿지 패턴 사용 브릿지 패턴의 핵심은 추상화 레이어와 구현 레이어를 분리하는 것 추상화 레이어는 기능을 수행하지 않고 기능에 대해서 필요한 경우 구현 레이어에 위임하고 구현 레이어의 메소드에 접근하여 사용 브릿지 패턴을 왜 쓰는가? 하나의 클래스가 점점 커지면서 다양한 일들을 수행하게 된다면 복잡해지는 단점이 존재하는데 이 때 기능과 추상화를 나누기 위해 사용 하나의 ..
빌더 패턴 인스턴스 생성 시, 필요한 값들에대해 단계적으로 개발자에게 인지를 시키며, 복잡한 생성로직을 사용하는쪽에서 모르게끔하는 방법 팩토리 패턴과 구분) 팩토리 패턴은 매개변수 모두 주입해야 사용 가능하지만, 빌더 패턴은 우선 인스턴스를 생성하고(인스턴스는 default value로 세팅된 상태) 필요한 프로퍼티의 값만 변경 빌더 패턴의 핵심은 확장성 House라는 클래스가 있을 때, 코드 여러곳에서 House라는 것을 생성 할 경우, 특정 매개변수들은 항상 동일한 값을 갖는 것이 존재할텐데, 이 값들을 사용하는쪽에서 매번 파라미터로 넘기는 코드가 있다면 지저분한 코드가 될 것 House 코드의 인스턴스를 생성할 때 단순히 House() 이렇게 만든 후, 필요한 값들은 setWindows(_:), s..
추상 팩토리 (Abstract Factory) 팩토리: 인스턴스를 생성하는 곳 추상: 일종의 protocol 추상 팩토리: 팩토리에서 인스턴스를 생성할 때, 인스턴스의 타입이 protocol으로 표현하여, 특정 구체적인 타입만을 리턴하는게 아닌 여러개의 타입을 리턴할 수 있게하여 확장성을 위해 사용 추상 팩토리 예시 SwiftUI의 NavigationView는 iOS 16.0 에서부터 deprecated가 되었으며, NavigationStack이 새로 생성 iOS 16 이하인 버전에서 적절히 사용방법? 추상 팩토리를 사용하여 해결이 가능 getNavigation() -> View라는 메소드를 정의하고 사용 ViewFactory의 getNavigation 메소드는 추상적인 뷰를 나타내는 some View ..