Design Pattern/GoF - Creational Patterns
![[GoF Design Patterns] Singleton](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdM6cs8%2FbtsKckGeCHw%2F67PblwfkhNmYkLCZclaFG0%2Fimg.png)
[GoF Design Patterns] Singleton
오늘의 주제는 Singleton Pattern입니다.개인적인 생각으로 Creational Patterns 중 가장 유명(?)하고 익숙한 Pattern이라고 생각합니다.1. 설계 목적Singleton은 Class 인스턴스가 하나만 있도록 하고 이 인스턴스를 전역에서 접근할 수 있도록 하는 패턴입니다.2. 문제 상황예를 들어 데이터베이스 혹은 파일 시스템과 상호작용하는 클래스가 있다고 가정합니다.만약 2개 이상의 인스턴스가 존재할 경우, DB에 중복으로 연결되어 데이터의 불일치가 생기거나 파일 데이터의 Data Race가 발생할 수 있습니다.이러한 상황을 미리 예방하기 위해 인스턴스의 개수를 한 개로 유지합니다. 또한 클래스가 너무 복잡한 초기화 과정을 거치거나, Cache나 Log를 관리하는 클래스처럼 동..
![[GoF Design Patterns] Prototype](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYGAYF%2FbtsJRDAjU0H%2FKKPSPdKNt7bVUqZaXfpJK0%2Fimg.png)
[GoF Design Patterns] Prototype
오늘 알아볼 Creational Patterns은 Prototype입니다.1. 설계 목적코드가 클래스에 의존되지 않고도 기존 객체를 복사할 수 있게 해주는 패턴입니다.2. 문제 상황어떠한 객체가 있고, 그 객체의 정확한 복사본을 만들고 싶다고 가정해봅시다. 단순하게 생각해서 같은 클래스의 새 객체를 생성하고, 원본 객체의 필드(프로퍼티)들의 값을 새 객체에 똑같이 복사 혹은 저장하면 됩니다.하지만 객체의 일부 필드(프로퍼티)들이 private한 성질을 갖는다면 어떨까요? 복사를 위한 외부 접근이 불가능 할겁니다.따라서 모든 복사가 항상 가능한 것은 아닙니다.추가적으로 패턴의 의미를 다시 한 번 들여다봅시다. 코드가 클래스에 의존되지 않는다는건 어떤 의미일까요?말했듯 객체를 복사하기 위한 단순한 방법은 새..
![[GoF Design Patterns] Builder](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp02OK%2FbtsJPHQl2Kv%2F0mCJJ74XfYEXPhozdkK2B1%2Fimg.png)
[GoF Design Patterns] Builder
* 예제 코드 및 설명에 필요한 개념들이 Swift를 기준으로 작성된 글입니다.Creational Patterns의 세 번째 Pattern은 Builder 입니다.1. 설계 목적복잡한 객체들을 단계별로 생성할 수 있는 패턴입니다. 같은 구조화 코드를 이용해서 객체의 다양한 타입과 표현을 생성할 수 있습니다.2. 문제 상황많은 필드와 Nested Objects를 단계별로 초기화해야하는 객체가 있다고 가정합시다.예시로는 House 객체가 있습니다. 여기서 단순한 집이 아닌 다양한 형태의 집이 필요하다면 어떻게 해야할까요?사실 아래 이미지처럼 House 객체에 다양한 Property들을 추가하여 초기화 시에 매개변수로 전달하거나, 자식 클래스를 정의하는 방법으로 해결할 수 있습니다.하지만 예상 가능하듯이 Ho..
![[GoF Design Patterns] Abstract Factory - 실제 사용 예제](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpREqR%2FbtsJM17YjOO%2Fb6BWk8vbLwYZeKUEAoSgB1%2Fimg.png)
[GoF Design Patterns] Abstract Factory - 실제 사용 예제
Abstract Factory 패턴의 실제 사용 예제에 대해 알아봅시다.아래 개념 설명 글을 보고 오시면 더 쉽게 이해할 수 있습니다.https://littlemoom.tistory.com/58 [GoF Design Patterns] Abstract Factory* 예제 코드 및 설명에 필요한 개념들이 Swift를 기준으로 작성된 글입니다. 지난번의 Factory Method에 이어서 오늘은 Abstract Factory 패턴에 대해 알아보겠습니다.Abstract Factory 또한 Creational Patterns 중littlemoom.tistory.com * 편의를 위하여 예제의 Input Type을 String으로 통일하였습니다.* 정의되는 개념이 많아 개념 구조 이미지에서의 명칭을 함께 표기하였..
![[GoF Design Patterns] Abstract Factory](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoMRUD%2FbtsJNuBV0cv%2Fy0T97UIN0YSpLoL55GMhZ0%2Fimg.png)
[GoF Design Patterns] Abstract Factory
* 예제 코드 및 설명에 필요한 개념들이 Swift를 기준으로 작성된 글입니다.지난번의 Factory Method에 이어서 오늘은 Abstract Factory 패턴에 대해 알아보겠습니다.Abstract Factory 또한 Creational Patterns 중 하나입니다.1. 설계 목적구체적인 특정 클래스를 지정하지 않고도 연관된 객체들의 모음을 생성할 수 있는 패턴입니다.??2. 문제 상황가구 매장 예시로 들어봅시다.제품군은 Chair, Sofa, CoffeeTable이며, 각 제품군 별로 Modern, Victorian, ArtDeco의 스타일이 존재합니다.이때 새로운 제품 객체를 생성하는데, 고객이 기존에 가진 스타일의 제품 객체를 생성하는 것이 중요합니다.새로운 제품군 혹은 스타일을 추가할 때마..