Clean Architecture

Clean Architecture

[Clean Architecture] iOS Repository Pattern이란?

Repository Patten이란? 간략하게 말아서 데이터 출처(로컬 db인지, 원격 db인지)와 관계 없이 동일 인터페이스로 데이터에 접속할 수 있도록 만드는 것을 Repository Pattern이라고 한다. MVVM으로 따지면 ViewModel 밑에 Repository라는 계층을 하나 더 두어서 ViewModel이 오직 비즈니스 로직에만 집중할 수 있게 한다. (데이터를 로컬과 서버 중 어디서 가져올지, 또 어떻게 가공할지는 Repostitory가 하기 때문입니다.) 그리고 CleanArchitecture로 가정하면 Domain 계층의 UseCase 밑에 Repository라는 계층을 하나 더 두어, Usecase가 오직 비즈니스 로직에만 집중할 수 있게 한다. 장점을 정리하면 다음과 같다. Re..

Clean Architecture

[Clean Architecture] 만들면서 배우는 클린 아키텍처 9장

9장. 애플리케이션 조립하기 의존성 주입 이용하기 앞에서 유스케이스, 웹 어뎁터, 영속성 어뎁터를 구현했으니, 이제 이것들을 동작하는 애플리케이션으로 조립할 차례 3장에서 이야기했듯이 애플리케이션이 시작될 때 클래스를 인스턴스화하고 묶기 위해서 의존성 주입 메커니즘을 이용 왜 조립까지 신경 써야 할까? 왜 유스케이스와 어탭터를 그냥 필요할 때 인스턴스화하면 안 되는 걸까? 코드 의존성이 올바른 방향을 가리키게 하기 위해서입니다(안쪽으로 향하도록) 만약 유스케이스가 영속성 어탭터를 호출해야 하고, 스스로 인스턴스화한다면 의존성의 방향이 잘못된것이다. 해당 이유가 바로 아웃고잉 포트 인터페이스를 구현한 이유입니다. 유스케이스는 인터페이스만 알아야 하고, 런타임에 이 인터페이스의 구현을 제공받아야 한다. 이러..

Clean Architecture

Coodinater Pattern 정의 및 예제(1)

Coodinater Pattern이란? Coordinator는 뷰 컨트롤러의 움직임을 조정하기 위한 타입이다. 이러한 Coordinater가 필요한 이유는 1. Massive View Controller의 문제점 2. 기존 화면전환 시 존재하던 ViewController간의 수평적인 관계 또는 강한 결합의 문제점 을 해결하기 위해서 등장하게 되었다. 이러한 문제점을 극복하기 위해 아예 화면전환을 관리하는 독립적인 클래스를 이용하자는 것이 주 아이디어이다. 한 두개의 화면으로 구성된 프로젝트의 경우 큰 문제가 없을지 몰라도, 프로젝트가 커질 경우 다양한 방식의 화면 전환이 이루어질 가능성이 있고, ViewController들이 서로서로 종송적으로 연결되어 있다면 관리하기 또한 어려울 것이다. 따러서 Vie..

Clean Architecture

클린 아키텍쳐 정리 및 예제

클린 아키텍처란? 오늘날까지 수많은 아키텍처(마이크로 서비스, 서버리스 등)들은 전반적으로 '관심의 분리'(Seperation of concerns)와 '테스트 가능성'(Testability)을 보편적인 요구를 갖고 있습니다. 클린 아키텍처는 이러한 요건을 만족하는, 간단히 말하면 '추상화 개념'(Abstraction principle)으로써 관심사를 분리시키고 의존도를 낮추는 것에 목적을 둔 아키텍처입니다. 의존도를 낮추고 서로에게 주는 영향을 감소함으로써 유지보수의 용이성이 향상됩니다. 덕분에 낮은 비용으로 새로운 기능을 추가할 수 있습니다. 기본적인 원리는 종속성 규칙(Dependency Rule)을 지키는 것입니다. 각 코드의 종속성은 외부에서 내부로 안쪽으로만 가리킬 수 있고, 고수준 정책(Hi..

bamtorii
'Clean Architecture' 카테고리의 글 목록