apple/DesignPattern, Architecture 25

iOS VIPER 아키텍처 정리

iOS VIPER 아키텍처 정리 VIPER Architecture는 Jeff Gilbert와 Conrad Stoll이 클린 아키텍처를 iOS 앱 개발에 특별하게 적용하기 위해서 개발하고, 대중화해당 포스팅에서는 조금 더 최신화 형태로 구성 예제 파일VIRER란?ViewViewController로 xib/storyboardInteractor:데이터, 네트워킹 및 비즈니스 로직을 담당.PresenterView와 Interactor 사이에 데이터를 전달하고, 사용자 이벤트를 처리하여 라우터를 호출.VIPER의 다른 모든 객체들과 통신하는 유일한 객체Entity데이터 객체이며 데이터 접근은 Interactor에서 가능VIPER 모듈 사이에서 화면 전환을 담당RouterBuilder (해당 포스팅에서 구현에 추..

iOS Clean Architecture 실습 (MVVM)

iOS Clean Architecture 실습 (MVVM) 1부에서 학습한 내용을 기반으로 MVVM 형태로 Swift Package를 활용해 샘플 코드를 구현해보고자 함. 히스토리2022-09-23: 클린 아키텍처 스터디 (깃헙 프로젝트 분석)2024-12-09: 포스팅 글 깔끔하게 정리목차[iOS Clean Architecture (MVVM)](https://rldd.tistory.com/497)[iOS Clean Architecture (실습)](https://rldd.tistory.com/498) 클린 아키텍처 샘플 코드예제에 사용한 코드Search Package용어 정리DTO(Data Transfer Object)계층 사이에 데이터 교환을 위해 사용하는 객체로 DTO는 로직을 가지지 않는 데..

iOS Clean Architecture 정리 (코드 분석)

iOS Clean Architecture 정리 (코드 분석) iOS CleanArchtecture Example + MVVM 으로 깃헙에서 유명한 프로젝트를 분석해보고자 함. 히스토리2022-09-23: 클린 아키텍처 스터디 (깃헙 프로젝트 분석)2024-12-09: 포스팅 글 깔끔하게 정리목차[iOS Clean Architecture (MVVM)](https://rldd.tistory.com/497)[iOS Clean Architecture (실습)](https://rldd.tistory.com/498) 배경아래의 다섯가지 개념을 단일 아이디어로 통일하기 원했고, 따라서 소개한 아아디어가 클린 아키텍처Independent of Frameworks: 아키텍쳐는 소프트웨어 라이브러리의 존재에 의존하지..

Swift 디자인패턴 Coodinator Pattern (코디네이터 패턴)

Swift 디자인패턴 Coodinator Pattern (코디네이터 패턴) Coordinator 패턴은 화면 전환 및 네비게이션 로직을 분리하여 ViewController의 역할을 단순화하고, 앱의 화면 흐름을 관리하기 위한 아키텍처 패턴. 히스토리2022-07-07: 디자인 패턴 스터디 정리2024-11-29: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Coordinator Pattern코디네이터 패턴은 일반적으로 아래의 구조로 구성Coordinator는 모든 구체적인 Coordinator들이 반드시 구현해야 하는 메서드와 속성을 정의하는 인터페이스children과 router를 정의하며, 화면 전환 메서드인 present와 dismiss도 정의Concrete Coordinator ..

Swift 디자인패턴 Command Pattern (복합체 패턴)

Swift 디자인패턴 Command Pattern (복합체 패턴) Command 패턴은 행동 패턴 중 하나로, 특정 작업을 수행하기 위한 정보를 명령 객체에 캡슐화하는 방식. 히스토리2022-07-05: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Command PatternCommand Pattern은 일반적으로 3개지 개념으로 구성됨Command: 특정 작업을 수행하는 메서드를 호출하는 객체. 실행할 작업에 대한 정보를 포함Invoker(호출자): Command 객체를 호출하여 작업을 실행하는 역할. Invoker는 명령을 실행하기 위해 Command 객체를 참조Receiver(수신자): 실제 작업을 수행하는 객체. 명령 객체는 Receiv..

Swift 디자인패턴 Chain-of-Responsibility Pattern (책임 연쇄 패턴)

Swift 디자인패턴 Chain-of-Responsibility Pattern (책임 연쇄 패턴) Chain of Responsibility 패턴은 요청을 처리할 수 있는 여러 객체를 연결하여, 요청이 처리될 수 있는 객체를 찾는 행동 패턴.요청을 보낸 객체와 요청을 처리하는 객체를 분리하여, 요청을 처리할 수 있는 객체가 여러 개일 때 유용 히스토리2022-07-05: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 스스로 만든 예제로 변경   Chain-of-Responsibility PatternChain-of-Responsibility Pattern은 일반적으로 3개지 개념으로 구성됨Handler Protocol: 요청을 처리할 수 있는 인터페이스Concrete Handler: ..

Swift 디자인패턴 Composite Pattern (복합체 패턴)

Swift 디자인패턴 Composite Pattern (복합체 패턴) Composite Pattern은 객체들을 트리 구조로 그룹화하여 하나의 객체처럼 조작할 수 있게 함. 구조 패턴으로. 객체들을 트리 구조로 그룹화하여 하나의 객체처럼 조작할 수 있게 함. 히스토리2022-06-15: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Composite PatternComposite Pattern은 일반적으로 3개지 개념으로 구성됨Component: 공통 인터페이스를 정의Leaf: 구현된 객체를 나타내며, 더 이상 자식 객체를 가지지 않음Composite: 자식 객체를 포함할 수 있는 객체로, 자식 객체를 추가하거나 제거할 수 있는 메서드를 제공복합..

Swift 디자인패턴 Mediator Pattern (중재자 패턴)

Swift 디자인패턴 Mediator Pattern (중재자 패턴) Mediator Pattern은 객체 간의 복잡한 의사소통을 캡슐화하는 행동 패턴 히스토리2022-06-15: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 예제 변경  Mediator Pattern객체들이 직접 상호작용하지 않고, 중재자(Mediator)를 통해서만 소통하도록 설계.객체 간의 강한 결합을 줄이고 코드의 유연성을 높일 수 있음중재자 패턴은 일반적으로 4가지 개념으로 구성Colleague: 의사소통에 참여하는 객체로, 각 동료는 Mediator를 통해 간접적으로 소통Colleague Protocol: Colleague들이 구현해야 하는 메서드와 속성을 정의Mediator: Colleague 간의 의사소..

Swift 디자인패턴 FlyWeight Pattern (플라이웨이트 패턴)

Swift 디자인패턴 FlyWeight Pattern (플라이웨이트) 플라이웨이트 패턴은 메모리 사용량과 처리 과정을 최소화하기 위한 구조 패턴. 히스토리2022-06-09: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경 FlyWeight Pattern메모리를 효율적으로 사용하는 디자인 패턴으로, 공유 가능한 상태(공통 속성)를 분리하여 객체 생성 비용을 줄이는 방법을 제공대량의 객체를 생성해야 할 때 유용특히 반복적인 데이터를 다루는 경우 메모리 사용량을 크게 줄일 수 있음캐시를 구현하는데도 사용할 수 있음플라이웨이트 패턴은 일반적으로 3가지 개념으로 구성됨Intrinsic State: 공유 가능한 상태로 객체 간 공통된 데이터Extrinsic ..

Swift 디자인패턴 Facade Pattern (퍼사드 패턴)

Swift 디자인패턴 Facade Pattern (퍼사드 패턴) 퍼사드 패턴은 복잡한 시스템의 인터페이스를 단순화하여 사용자가 시스템을 더 쉽게 사용할 수 있도록 하는 구조 패턴 히스토리2022-06-07: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Facade Pattern여러 개의 서브시스템을 하나의 통합된 인터페이스로 감싸서 클라이언트가 복잡한 내부 구조를 알 필요 없이 간단하게 기능을 사용할 수 있도록 제공여러 서브시스템을 하나의 간단한 인터페이스로 통합클라이언트는 서브시스템의 세부 사항에 의존하지 않고 Facade를 통해 필요한 기능 호출시스템 내부 구조가 변경되더라도 Facade 인터페이스가 변하지 않으면 클라이언트 코드에 영향..