Architecture + Design Pattern
-
ReactorKitArchitecture + Design Pattern 2022. 10. 12. 01:03
ReactorKit 이란 ? 단방향 데이터 흐름을 가진 반응형 앱을 위한 Framework View: 사용자 입력을 받아서 Reactor 에 전달 (Action) Reactor로부터 받은 상태를 Rendering ViewController, Cell, Control 등을 모두 View 로 취급 protocol View { associatedtype Reactor var disposeBag: DisposeBag // self.reactor가 바뀌면 호출됨. func bind(reactor: Reactor) } Reactor View 에서 전달받은 Action 에 따라 로직 수행 상태를 관리하고 상태가 변경되면 View 에 전달 대부분의 View 는 대응되는 Reactor 를 가짐 protocol React..
-
Clean Architecture + MVVMArchitecture + Design Pattern 2022. 10. 3. 23:56
모바일 software engineering 에서 가장 많이 사용하는 architectural patterns 는 MVVM, Clearn Architecture, Redux pattern 이 있다. 이번 글에서는 MVVM 과 Clearn Architecture 가 iOS App 에서 어떻게 적용되는지 살펴볼 것이다. Clearn Architecture 에서 가장 중요한 규칙은 안쪽 layer 에서 바깥쪽 layer 로 dependencies 가 향하지 않는 것이다. 즉 안쪽에서는 바깥쪽에 대한 정보를 몰라야 한다. 모든 Layers 를 그룹으로 나누어보면 Presentation, Domain and Data layers 이렇게 세개로 구성할 수 있다. Domain Layer (Business logic)..
-
MVVMArchitecture + Design Pattern 2022. 9. 26. 10:47
Server로 부터 날짜를 가져오고, 날짜를 화면에 띄워주는 서비스를 생각해보자. 먼저 Repository 에서 Server 날짜를 가져온다. 가져오는 Server 의 데이터 (Entity)는 우리가 원하는 데이터 자체가 아니다. 즉, 가공이 필요하다. 따라서 그 다음으로 Service 에서 Repository 에 있는 Entity 를 가져와 이를 우리가 사용할 데이터 형태(Model)로 가공한다. 그 후에는 가공된 데이터를 화면에 보여주어야 하는데, Service 에는 'Date' Type 이 사용되지만 화면에서는 String Type이 필요하므로 데이터 형태의 변환이 또다시 필요하다. 이때, 그 가공을 맡는 곳을 ViewModel 이라고 한다. 그 후 View 에서 ViewModel 의 데이터를 가져..
-
Clean ArchitectureArchitecture + Design Pattern 2022. 9. 25. 22:27
지난 몇년동안 시스템 아키텍쳐에 대한 많은 아이디어들이 있었다. Hexagonal Architecture Onion Architecture Screaming Architecture DCI BCE 이 아키텍쳐들은 모두 디테일한 점들에서는 다른점을 가지고 있지만 크게보면 매우 유사하다. 이것들 모두 '관심사의 분리' 라는 같은 목적을 가지고있었고, 이것들 모두 소프트웨어를 여러 층들로 나눔으로써 그 목적을 이룬다. 각각은 최소 하나의 business rules 층과, interfaces 층을 가지고있다. 각 architectures 는 다음과 같은 시스템을 만든다. 1. 프레임워크와 독립적. 아키텍쳐는 소프트웨어에 얹혀있는 기능을 위한 라이브러리의 존재와 독립적이다. 이렇게 함으로써 프레임워크를 단순히 툴로..
-
Delegate & ProtocolArchitecture + Design Pattern 2022. 3. 28. 21:04
Swift 에서 controllers 간 communication 수단 중 하나인 Delegate & Protocol 은 주로 1:1 communication 에 쓰인다. (다른 수단으로는 Notification & Observer 도 있다. 1:n Communication 에 쓰임, completionHandler(Closure) 를 이용하는 방법도 있음 ) 먼저 간단히 설명하자면, Boss 와 employee 간의 관계로 이해하면 쉽다. (Boss 가 명령을 내릴 수 있는 list 는 protocol 에 정의된다. ) Boss 는 SettingsViewController, employee 는 ProfileViewController 로 보면 된다. 첫번째 화면은 첫번째 Screen 이자 Profile ..
-
Architecture Patterns ( MVC, MVP,MVVM ) ( with iOS, Swift)Architecture + Design Pattern 2021. 10. 21. 11:33
안녕하세요, 드디어 Architecture Patterns 에 대해 알아볼 시간입니다. 해당 글은 https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52 에 대한 번역과 함께 본인의 생각을 담아 작성하겠습니다. 먼저, 왜 architecture 에 대해 고민해야할까요 ? 가장 큰 이유는 아마도 app 이 커지면 커질수록 유지보수 하기가 어려워질 수 있기 때문일겁니다. Apple 에서는 MVC Pattern 을 Guide 로 주었지만 사실 MVC 에는 많은 문제가 있어요. (저도 경험하고 싶지 않았습니다.. 진작 architecture 에 대한 공부를 더 할걸 그랬어요..) 앞으로 3가지 pattern (출처에는 VIPE..