Swift를 사용하다 보면 특정 객체들이 Singleton 패턴을 이용해 구현된 걸 확인할 수 있다. 예를 들어 UIApplication 같은 경우 공식 문서를 보면 iOS 앱은 하나의 UIApplication 인스턴스를 가지고 있다고 나와있다.단 하나의 인스턴스를
지난 Singleton 패턴에 이어 이번에는 GoF 패턴 중 생성에 속해있는 Factory Method에 대해 작성해 보겠습니다.구체적으로 어떤 인스턴스를 만들지는 서브 클래스가 결정하는 패턴을 말합니다.구체적인 인스턴스는 ConcreteProduct에서 생성한다.기본
Factory Method에 이어 Abstract Factory에 대해 알아보겠습니다.이름처럼 두 패턴은 비슷한 점도 있지만 분명히 다른 점도 존재합니다.서로 관련있는 객체를 만들어주는 패턴을 말합니다.위에서도 언급했듯이 두 패턴은 결국 객체를 만들어 준다는 공통점이
GoF 생성 패턴 중 하나인 Builder에 대해 알아보겠습니다.인스턴스를 생성하다 보면 다양한 구성이 필요한 경우가 있습니다. 모든 프로퍼티 값이 필요한 인스턴스도 있고 그렇지 않은 인스턴스도 존재합니다.Builder 패턴은 인스턴스를 만드는 과정을 동일한 프로세스를
GoF 디자인 패턴 중 구조에 속해있는 Adapter 패턴에 대해서 다뤄보겠습니다.구조 패턴이란 클래스나 객체들을 조합해 더 큰 구조로 만들 수 있게 해주는 패턴입니다.기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴입니다.Client는 인터페이스(
지난 시간에 이어 오늘은 Bridge 패턴에 대해 알아보겠습니다.추상적인 것과 구체적인 것을 분리하여 연결하는 패턴입니다. 둘을 분리하지 않고 하나의 계층에서 사용하면 계층 구조가 커지고 중복된 코드를 여러번 작성해야 하는 불편함이 존재합니다.패턴 적용 전프로토콜을 이
오늘은 Composite 패턴에 대해 알아보겠습니다.Composite 패턴은 전체 계층 구조에서 부분적인 객체를 동일하게 취급할 수 있도록 하는 패턴입니다.해당 객체를 사용하는 Client 입장에서는 '전체'나 '부분'이나 동일한 인터페이스로 인식할 수 있는 계층 구조
오늘은 Decorator 패턴에 대해 알아보겠습니다.UML을 보면 이전에 공부했던 Composite랑 비슷하다고 느낄 수 있는데 이 부분에 대해서도 한번 알아보겠습니다.Decorator 패턴을 사용하면 런타임에 원하는 기능을 추가할 수 있습니다.런타임과 컴파일 타임에
오늘은 Facade 패턴에 대해 알아보겠습니다.Facade 패턴은 저도 모르게 많이 사용하고 있었습니다.Facade 패턴은 내부의 layer를 숨기기 위해 사용하는 패턴입니다.우리는 평소에 라이브러리나 프레임워크를 사용해 개발을 합니다. 라이브러리를 사용하다 보면 다양
오늘은 Flyweight 패턴에 대해 알아보겠습니다.제가 공부하면서 느낀 점은 캐싱과 비슷하다였습니다. 필요한 인스턴스를 만들어 저장해 재사용하는 느낌이었습니다.Flyweight 패턴은 자주 변하는 속성과 변하지 않은 속성을 분리하고 재사용하여 메모리 사용을 줄일 수
오늘은 Proxy 패턴에 대해 알아보겠습니다.Proxy 패턴을 공부하면서 Delegate 패턴과 비슷하다고 느꼈습니다. 실제로 RxSwift에는 DelegateProxy가 존재합니다.RxSwift의 DelegateProxy는 Delegate를 사용하는 프레임워크와 Rx
오늘은 Chain of Responsibility(책임 연쇄) 패턴에 대해 알아보겠습니다.객체는 하나의 책임을 가지고 있고 그러한 책임들을 연결하는 패턴입니다.책임? "객체 지향의 사실과 오해" 책에서는 책임을 외부에 제공해 줄 수 있는 정보 및 서비스의 목록이라고 설