apple/DesignPattern, Architecture 25

Swift 디자인패턴 Multicast Delegate Pattern (멀티캐스트 딜리게이트 패턴)

Swift 디자인패턴 Multicast Delegate Pattern (멀티캐스트 딜리게이트 패턴) 멀티캐스트 델리게이트 패턴은 델리게이트 패턴을 확장하여, 하나의 객체가 여러 개의 델리게이트에게 알림을 전송. 히스토리2022-06-07: 디자인 패턴 스터디 정리2024-11-26: 포스팅 글 재정리 및 예제 변경 Multicast Delegate Pattern멀티캐스트 객체가 델리게이트 객체와의 관계가 일대일이 아닌 일대다로 확장되며, 여러 개의 델리게이트 객체가 이벤트를 수신하고 반응할 수 있음이 패턴의 핵심은 멀티캐스트 델리게이트 헬퍼 클래스로, 이 클래스는 여러 델리게이트를 관리하고, 델리게이트 객체들이 이벤트를 받을 수 있도록 함.헬퍼 클래스를 통해 한 객체가 여러 델리게이트에게 동일한 이벤트를..

Swift 디자인패턴 State Pattern (상태 패턴)

Swift 디자인패턴 State Pattern (상태 패턴) State Pattern은 객체의 내부 상태에 따라 동작이 변경되도록 설계하는 행동 패턴.  히스토리2022-05-30: 디자인 패턴 스터디 정리2024-11-27: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경  State Pattern상태 패턴을 사용하면 객체의 상태를 별도의 상태 클래스로 추상화하고, 객체는 자신의 상태를 바꾸면서 동작을 동적으로 변경할 수 있음Context: 상태를 관리하고, 현재 상태에 따라 행동을 위임하는 클래스State: 공통 인터페이스 또는 추상 클래스 정의 모든 Concrete 클래스는 해당 인터페이스 구현Concrete State: State 인터페이스를 구현한 클래스로 상태별 고유 동작 저의상태..

Swift 디자인패턴 Prototype Pattern (프로토타입 패턴)

Swift 디자인패턴 Prototype Pattern (프로토타입 패턴) Prototype 패턴은 객체를 새로 생성하는 대신, 기존 객체를 복사하여 새로운 객체를 만드는 생성 패턴.  히스토리2022-05-28: 디자인 패턴 스터디 정리2024-11-27: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경Prototype Pattern객체를 빠르게 생성하거나 런타임에 객체의 구조를 동적으로 변경해야 할 때 유용 Prototype Pattern은 일반적으로 3개지 개념으로 구성됨Prototype Interface: 객체를 복사할 수 있는 인터페이스(clone) 정의Concrete Prototype: Prototype Interface를 구현하며, 복사 가능한 객체를 생성Client: Prototy..

Swift 디자인패턴 Iterator Pattern (반복자 패턴)

Swift 디자인패턴 Iterator Pattern (반복자 패턴) Iterator Pattern은 컬렉션(집합체)에 저장된 요소를 순차적으로 접근하는 방법을 제공하는 행동 디자인 패턴.컬렉션의 내부 구현 방식을 노출하지 내부 요소들은 탐색할 수 있도록 함. 히스토리2022-05-13: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Iteractor Pattern두 가지 개념으로 구성됨Iterator: 컬렉션의 요소를 하나씩 탐색하는 객체. 주로 next(), hasNext() 같은 메서드를 제공.Iterable: 반복자 객체를 반환하는 makeIterator() 메서드를 제공하여, 컬렉션이 반복 가능하도록 함.이터레이터 패턴 장점컬렉션 내부 ..

Swift 디자인패턴 Adapter Pattern (어댑터 패턴)

Swift 디자인패턴 Adapter Pattern (어댑터 패턴) Adapter Pattern은 서로 호환되지 않는 인터페이스를 가진 클래스들이 함께 동작할 수 있도록 중간 역할을 하는 구조 패턴.기존 코드를 변경하지 않고, 원하는 인터페이스를 갖춘 어댑터를 추가하여 두 시스템을 연결 히스토리2022-05-13: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 예제 변경 Adapter Pattern어댑터 패턴은 4가지 구성요소로 이루어져 있음클라이언트(Client):특정 인터페이스를 기대하며 동작하는 코드.타겟(Target): 클라이언트가 호출하려는 인터페이스.어댑터(Adapter): 타깃 인터페이스를 구현하여, 실제 서비스를 제공하는 어댑티(Adaptee)를 감싸는 객체.어댑티(Ada..

Swift 디자인패턴 Factory Pattern (팩토리 패턴)

Swift 디자인패턴 Factory Pattern (팩토리 패턴) Factory Pattern은 객체 생성을 캡슐화하여, 클라이언트가 객체 생성 방식에 대해 알 필요 없도록 설계하는 생성 패턴이를 통해 객체 생성 로직을 중앙 집중화하고, 유지보수를 용이하게 함. 히스토리2022-05-08: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 예제 변경 Factory Pattern팩토리 패턴은 다른 개념으로도 확장 가능단순 팩토리 패턴: 조건에 따라 객체를 생성하는 메서드만 제공 (정식 팩토리 패턴은 아님)팩토리 메서드 (Factory Method) 패턴: 서브클래스에서 객체 생성 과정을 오버라이드하여 생성 로직을 확장추상 팩토리 (Abstract Factory) 패턴: 관련 객체군을 생성하..

Swift 디자인패턴 MVVM Pattern (MVVM 패턴)

Swift 디자인패턴 MVVM Pattern (MVVM 패턴) MVVM 패턴은 모바일 개발에서 자주 사용하는 아키텍처 패턴. 히스토리2022-04-26: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 예제 변경   MVVM Pattern기본적으로 아래의 구성요소들로 구성Model: 앱의 데이터 및 비즈니스 로직의 일부View: 앱의 화면 영역 담당ViewModel: View와 Model의 중재자 역할MVVM 패턴은 파생 아키텍처가 많고, 아키텍처에 따라 용어의 차이도 존재하여, 가장 기본적인 것들을 서술클린아키텍처MVVM-CVIPERRIBsReactorKitTCA 코드 예제UIKit이랑 SwiftUI에서 모두 MVVM을 사용하는 기본 예제를 확인할 수 있도록 만들어 둠ViewModel..

Swift 디자인패턴 Builder Pattern (빌더 패턴)

Swift 디자인패턴 Builder Pattern (빌더 패턴) Builder 패턴은 복잡한 객체를 단계적으로 생성할 수 있도록 설계된 생성 패턴객체 생성 과정에서 다양한 설정 옵션이나 순서를 필요로 하는 경우 유용하며, Builder 패턴은 객체 생성 로직을 분리하여 코드의 가독성과 재사용성을 높임. 히스토리2022-04-22: 디자인 패턴 스터디 정리2024-11-29: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경 Builder Pattern빌더 패턴은 기본적으로 3가지 구성요소와 선택 사항으로 1가지가 추가되어 구성됨Builder: 객체 생성 단계를 정의하는 인터페이스 제공 및 각 단계 별 생성해야 할 객체의 세부사항 결정Concrete Builder: Builder 인터페이스 구현 ..

Swift 디자인패턴 Observer Pattern (옵저버 패턴)

Swift 디자인패턴 Observer Pattern (옵저버 패턴) Observer Pattern은 객체 간의 일대다 관계를 정의해, 한 객체의 상태 변화가 다른 객체에 자동으로 알리는 행동 패턴. 히스토리2022-04-19: 디자인 패턴 스터디 정리2024-11-29: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경   Observer PatternPrototype Pattern은 일반적으로 3개지 개념으로 구성됨Subject, Publisher, Observable(관찰하고자 하는 대상): 상태를 관리하며, 관찰자(Observer) 등록, 제거, 알림 기능을 제공Observer, Subscriber(관찰자): Subject의 상태 변경을 통보받는 객체 ConcreteSubject & Con..

Swift 디자인패턴 Memento Pattern (메멘토 패턴)

Swift 디자인패턴 Memento Pattern (메멘토 패턴) Memento 패턴은 객체의 내부 상태를 캡처해서, 이후 해당 상태를 복원할 수 있도록 하는 행동 패턴.객체의 데이터를 저장하고 복원해야 하는 상황에서 유용 히스토리2022-04-13: 디자인 패턴 스터디 정리2024-11-29: 포스팅 글 재정리 및 조금 더 실용적인 예제 코드로 변경 Memento Pattern메멘토 패턴은 일반적으로 3개지 개념으로 구성됨Originator: 상태를 생성하고, Memento 객체로 저장하거나 복원하는 역할Caretaker: Memento 객체를 관리하며, Originator의 상태를 저장하고 복원할 책임을 가짐.Memento: Originator의 상태를 저장하는 객체며, 캡슐화를 통해 Origina..