💡 팩토리 메서드란 객체 생성을 공장 클래스로 캡슐화 처리하여 대신 생성하게 하는 생성 디자인 패턴입니다. 자식 클래스들이 팩토리 메서드를 오버라이딩 해 생성될 객체들의 유형을 변경할 수 있도록 하는 패턴입니다. 즉, Client에서 직접 new 연산자로 객체를 생성하지 않고, 제품 객체들을 도맡아 생성하는 공장 클래스를 만들고, 이를 상속하는 공장 클래스 메서드에서 여러가지 제품 객체 생성을 각각 책임지는 것입니다. 팩토리 메소드 패턴은 객체를 만들어내는 공장(Factory 객체)을 만드는 패턴입니다. 어떤 클래스의 인스턴스를 만들지는 미리 정의한 공장 서브 클래스에서 결정합니다. 💡 팩토리 메서드 기본 구조 공장 객체와 제품 객체 간 느슨한 결합 구조로 이루어 집니다. 이와 같은 구조는 객체 간의 결..
디자인패턴
💡 비지터 패턴이란 방문자와 방문 공간을 분리해, 방문 공간이 방문자를 맞이할 때 이후 행동을 방문자에게 위임하는 패턴 알고리즘들을 그들이 작동하는 객체로부터 분리(캡슐화) 할 수 있도록 하는 행동 디자인 패턴입니다. "나는 동물원에 간다. 나는 ~를 한다" '나'라는 객체가 '동물원' 이라는 객체를 입력받은 후 동물원에서 무언가 한다는 건 일반적인 OOP 추상화입니다. 반면 비지터 패턴은 "동물원에 내가 갔다. 내가 ~를 하게 한다" '동물원' 이라는 객체가 '나'라는 객체를 입력 받은 후, '나'라는 객체의 행동을 호출하는 것입니다. 이 때 동물원에 대한 정보를 파라미터로 넘겨줍니다. 즉, 사용자는 방문자의 입장이 아니라 방문 공간의 입장에서 먼저 생각해보게 됩니다. 예를 들어 동물원에 있는 사자, ..
💡 옵저버 패턴이란 옵저버들이 관찰하고 있는 대상자의 상태 변화가 있을 때마다 대상자는 직접 목록의 관찰자들에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴 즉, 어떤 객체의 상태가 변할 때 그와 연관된 객체들에게 알림을 보내는 디자인 패턴입니다. 쉽게 이해하자면 유튜브나 스팸 메일로 비유할 수 있습니다. 유튜브 채널은 발행자(Subject)가 되고, 유튜브 구독자는 관찰자(Observer)가 되는 구조입니다. 만약 시청자에게 채널 정보를 전달한다면 시청자가 시간을 낭비하던지, 채널 주인이 알림을 원하지 않는 고객들에게 전달하며 자원을 낭비하게 될 것입니다. 구독자들은 해당 채널을 구독함으로써 채널에 어떠한 변화가 생기면 바로 연락을 받고 탐지하게 됩니다. 반면, 구독을 해지하거나 하지 않..
💡 브릿지 패턴이란 큰 클래스 또는 밀접하게 관련된 클래스들의 집합을 두 개의 개별 계층 구조(추상화 및 구현)로 나눈 후 각각 독립적으로 개발할 수 있도록 하는 구조 디자인 패턴입니다. 브릿지 패턴은 상속에서 객체의 합성으로 전환하여 위 문제를 해결합니다. 즉, 차원 중 하나를 별도의 클래스 계층 구조로 추출하여 원래 클래스들이 한 클래스 내에서 모든 상태와 행동들을 갖는 대신 새 계층 구조의 객체를 참조하도록 하는 것입니다. 여기서 모양 클래스는 색상 객체들 중 하나를 가리키는 참조 필드를 받습니다. 이제 모양은 연결된 색상 객체에 모든 색상 관련 작업을 위임할 수 있습니다. 이 참조는 이제부터 모양 및 색상 클래스들 사이의 Bridge(다리) 역할을 하게 됩니다. 이제 새 색상들을 추가할 때 모양 ..
싱글톤 패턴이란 불필요한 인스턴스 생성 없이 오직 한 개의 인스턴스만 생성하여 사용되는 디자인 패턴입니다. 싱글톤 패턴을 사용하는 이유 1. 단일 인스턴스를 보장합니다. 최초 한번의 new 연산자를 통해 고정된 메모리 영역을 사용하여 메모리 낭비를 방지합니다. 이미 생성된 인스턴스를 활용하면서 속도 측면에서 장점을 가지고 있습니다. 2. 전역 액세스 지점을 제공합니다. 싱글톤 인스턴스는 전역적으로 접근 가능한 유일한 지점입니다. Application 어디에서도 이 인스턴스에 접근할 수 있어 데이터 공유와 통신에 용이합니다. 전역 변수는 편리하지만 모든 코드가 잠재적으로 해당 변수 내용을 덮어쓸 수도 있고, 그로 인하여 앱에 오류가 발생해 충돌이 일어날 수도 있으므로 안전한 방법이 아닙니다. 싱글톤 패턴의..