일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Swift LinkedList
- Swift 고차함수
- Persistent store Coordinator
- CoreData Filter
- 트레일링 클로저
- expensive operation
- Associated Value
- NSPredicates
- CoreData
- Raw value and Associated value
- 다익스트라 이해
- Clean swift
- Swift
- Java
- Swift closure
- leetcode #01
- NSSortDescriptor
- 1009번
- codability
- 일급 객체
- CoreData Concurrency
- 2022 부스트캠프
- 스위프트 클로저
- CoreData Stack
- persistentStoreCoordinator
- NSManagedObject SubClass
- dateFormatter
- LightWeight Migration
- iOS Static Library 사용하는방법
- iOS Static Library
- Today
- Total
목록Architecture (5)
하루를살자
이번 포스트에선 현재 진행 중인 Picteresting 프로젝트를 에 Presentation Layer를 적용한 내용을 정리해보는 시간을 갖겠습니다. 1.0 ViewModel 리팩토링. 리팩터링 이전의 HomeViewModel, ImageEntity HomeViewModel domainLayer 리팩터링을 진행하면서 개선된 Usecase를 적용한 HomeViewModel 은 아래와 같습니다. final class HomeViewModel { var didUpdateLikeStatusAt: ((Int) -> Void)? var imageList: Observable = Observable([]) private let fetchImageUsecase: DefaultFetchImageUsecase privat..
Presentation Layer는 ViewModel, View 들을 포함하고, ViewModel 프로퍼티인 items 들은 View에서 관찰하고 있는 오브젝트들이다 (관찰하는 오브젝트들이 업데이트되면 view에서 변한 값을 적용하여 사용자에게 보여줌). 즉 ViewModel 은 View에서 필요한 데이터를 관리하고 있는 것이다. 이 과정에서 ViewModel 은 entity의 raw 한 데이터 타입을 View에 바로 보여줄 수 있는 형식으로 변환하는 작업도 해준다. ex) MovieListViewModel 의 item 은 Observable이고, MoviesListView 인 MoviesListViewController에서 MoviewListItemViewModel의 데이터를 사용자에게 시각화뿐만 아니..
Domain Layer 예제 프로젝트에서 Domain Layer 에 속하는 Domain 폴더를 살펴보자. 크게 3가지 분류: Entities, UseCase, Repository 의 Interface 로 나눠서 볼수 있다. Entity : 프로젝트에 사용되는 도메인 정보. Usecase : 어플리케이션 안에서 사용자가 사용할수 있는 메인 기능 의 인터페이스와 구현체. UseCase 는 또 다른 Usecase 에 의존할수 있다 UseCase 는 interactor 라고도 부른다 Repository Interface : Dependency Inversion 을 위한 인터페이스. (Dependency Inversion 은 이 아티클에서 잘 설명해줌) protocol SearchMoviesUseCase { ..
이 포스트 시리즈 에선 MVVM 과 Clean Architecture 를 사용한 프로젝트 예시 를 보며 적용 방식을 이해하고 직접 만든 프로젝트를 리팩토링하는 시간을 가질예정 입니다. Clean Architecture 란? 프로젝트를 진행하다보면 나도 모르게 같은 코드를 다른곳에서 다시 쓰고 있고, 기능을 추가 하거나 수정해야할시 어디서부터 무었을 건드려야할지 모를때가 있다. 이런경우는 흔하게 발생하고 실제로 기능하나를 추가 하기 위해서 처음부터 다시 프로그램을 작성해야하는 상황도 번번히 나오고 있다. 이런경우를 미연에 방지하기 위해서 software 엔지니어들은 다양한 방법을 고안했는데, 이중 Robert Cecil Martin 라는 사람이 프로그램을 작성하는 것은 마치 건물을 짓는것과 같은 행위라고..
Uncle Bob 은 "어떠한 건물의 설계도면만 봐도 이건물의 기능을 알수 있어야한다" 라는 말을 하면서 실제 건축학 으로부터 영감을 받아 소프트웨어 개발 에 접목시켰다고한다. 이 건축 패턴을 "Clean Architecture" 라고 명하였고, 이 패턴을 사용하면 개발자들은 새로운 기능을 추가하거나, 버그를 고칠때 더이상 자신들이 작성한 얽히고 설킨 코드를 되짚어가며 시간을 낭비할 필요가 없어질것 이라고 하였다. 도대체 어떻게 그런 설계를 할수 있지? 라는 의문이 드는데, Uncle Bob 은 clean architecture 의 핵심 포인트를 아래와같이 설명한다. Framework 로 부터 독립적 이여야 한다. 자신이 만든 시스템은 라이브러리 를 하나의 도구로 사용해야한다. 절대로 주어진 라이브러리의..