[iOS/Design Pattern] 간단한 예제로 Clean Architecture를 설계해보자.
·
iOS/Design Pattern
프로젝트에 클린 아키텍처를 적용하기 전에, 그 개념을 확실히 이해하고자 간단한 예제를 통해 클린 아키텍처를 설계해보고자 한다.  도메인 계층✔️ Entity유저 리스트를 보여주는 것이 주요 서비스이기 때문에 핵심 데이터는 유저이다. 그래서 Entity에는 유저 정보가 담겨있다. ✔️ UserUseCaseProtocolUseCase는 비즈니스 로직이다. 여기서 비즈니스 로직은 유저의 정보를 받아오는 것이다. 이 로직을 처리하기 위해서는 Data 계층에서 데이터를 가져와야하는데, Domain 계층이 Data 계층을 의존하게 될 경우 의존성 규칙을 위배하게 되는 것이므로, 직접 참조하지 않고 의존성 역전을 이용하여 참조한다.  ✅ 의존성 역전Repository Interface를 구현해서 UseCase가 이를..
[iOS/Design Pattern] Clean Architecture를 알아보자.
·
iOS/Design Pattern
클린 아키텍처?클린아키텍처란? 클린 아키텍처는 소프트웨어 설계 원칙으로, 로버트 C. 마틴이 제안한 개념이다. 클린 아키텍처의 주요 목표는 아래와 같다. 1. 프레임워크 독립성 : 시스템이 특정 프레임워크에 종속되지 않도록 한다.➡️ 처음에는 UIKit을 사용했지만, SwiftUI로 전환해야 할 상황이 생겼다. 비즈니스 로직을 UIKit과 독립적인 별도의 모듈로 구현한다. 이렇게 하면 나중에 SwiftUI로 전환하고자 할 때, UI레이어만 변경하면 되고 핵심 비즈니스 로직은 그대로 사용할 수 있다. 2. 테스트 용이성 : 비즈니스 로직을 외부 요소 없이 테스트할 수 있게 한다.➡️ '장바구니에 책 추가하기' 기능을 구현한다고 가정하자. 이 기능을 순수한 비즈니스 로직으로 구현하여, 필요한 외부 의존성(데..
[iOS/Design Pattern] 코디네이터 패턴
·
iOS/Design Pattern
iOS 앱 개발 환경이 점차 복잡해지면서, 기존의 아키텍처 패턴들이 직면한 한계를 극복하기 위해 코디네이터 패턴이 등장했다. 특히 MVC 패턴의 문제점이 두드러지게 나타났다. MVC패턴에서는 ViewController가 UI로직, 비즈니스 로직, 그리고 화면 전환 로직까지 모두 담당하게 되어 "Massive ViewController" 문제가 발생했다. 이로 인해 코드의 재사용성이 떨어지고, 유지보수가 어려워졌으며, 단위 테스트 작성도 복잡해졌다.  앱의 규모가 커지고 기능이 다양해지면서, 화면 간의 전환 로직도 복잡해졌다. 여러 화면을 가쳐가는 사용자 플로우를 관리하는 것이 점점 더 어려워졌고, 이는 코드의 가독성과 유지보수성을 저하시켰다. 또한, 앱의 각 부분을 독립적인 모듈로 개발하고 쉽게 확장할 ..