일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- 리펙토링
- swiftUI
- Clean Code
- Protocol
- 클린 코드
- RxCocoa
- Human interface guide
- swift documentation
- Observable
- 애니메이션
- UITextView
- collectionview
- Xcode
- HIG
- MVVM
- combine
- UICollectionView
- uiscrollview
- Refactoring
- 리펙터링
- ribs
- clean architecture
- ios
- SWIFT
- rxswift
- 리팩토링
- tableView
- 스위프트
- uitableview
- map
- Today
- Total
목록디자인 패턴 (4)
김종권의 iOS 앱 개발 알아가기
어댑터 패턴 (Adapter, Wrapper) 현재 A 기능을 사용중일때 이와 유사한 B, C 기능이 계속 생겨나면서, B, C 인터페이스도 A와 동일하게 만드는 것을 목적으로 A의 프로토콜을 준수하는 BAdapter, CAdapter로 만들어서 사용하는쪽에서 코드의 변경을 최소화 하는 방법 가장 대표적인 예는, AuthService를 만들어 놓았을때, 네이버 로그인 및 카카오 로그인이 생겨나면서 이 것들의 인터페이스를 기존의 AuthService와 동일하게 하는 Adapter구현체를 만드는 방법 왜 Adapter 패턴을 사용하는가? 서비스를 사용하는 코드 레이어에서 최소한의 변경사항으로 확장성 있는 기능을 추가하기 위함 코드의 중복을 막을 수 있는 방법 Adapter 패턴의 예시 현재 AuthServi..
팩토리 메소드 패턴 인스턴스 생성을 팩토리라는 곳에서 담당하며, 이를 사용하는 쪽(클라이언트 코드)에서는 관심사를 분리하는 것 만약 새로운 인스턴스를 생성해야할때 팩토리 메소드를 사용하면 클라이언트 코드에서는 인스턴스를 만드는 별도의 코드수정을 안해도 되는 패턴 팩토리 메소드 패턴 예시 예제 데이터 - 때에 따라서 Circle 혹은 Rectangle을 그려야하는 상황 class Circle { func draw() { print("draw circle") } } class Rectangle { func draw() { print("draw rectangle") } } class ViewController: UIViewController { override func viewDidLoad() { super...
빌더 패턴 인스턴스 생성 시, 필요한 값들에대해 단계적으로 개발자에게 인지를 시키며, 복잡한 생성로직을 사용하는쪽에서 모르게끔하는 방법 팩토리 패턴과 구분) 팩토리 패턴은 매개변수 모두 주입해야 사용 가능하지만, 빌더 패턴은 우선 인스턴스를 생성하고(인스턴스는 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 ..