생성 패턴이 필요한 이유
생성 패턴이란 객체 생성과정을 보다 유연하고 효율적으로 만들기 위해 사용된다. 이들을 사용하는 이유는 다음과 같다.
1. 객체 생성과 구현을 분리: 생성패턴을 사용하면 객체를 생성하는 로직과 해당 객체를 사용하는 구현부의 로직을 분리할 수 있다. 이를 통해 코드의 시인성 향상, 역할 분리등의 입장에서 강점을 가질 수 있다.
2. 코드 재사용성 증가: 특정 객체를 생성하는 로직을 통일 시키게 되면 해당 객체를 사용하는 모든 메소드에서 동일한 생성로직을 가지는 객체를 활용할 수 있어진다.
3. 시스템의 유연성 증가 및 확장 : 1,2번과 같은 이유로 객체의 생성로직이 달라지거나 혹은 새롭게 객체를 추가할 때 해당 객체의 생성 부분만 변경하거나 추가하면 되기 때문에 시스템의 유연성과 확장 측면에서 이점을 가지게 된다.
팩토리 패턴
팩토리 패턴은 객체를 사용하는 클라이언트 코드와 객체를 생성하는 코드를 분리하는 패턴으로 객체를 생성을 담당하는 클래스를 팩토리 클래스라고 부른다.
간단한 팩토리 패턴
간단한 팩토리 패턴은 단순히 한 개의 팩토리 클래스에서 모든 객체의 생성을 담당한다. 어떤 객체를 생성할지는 조건문을 사용해 요청 받은 타입에 맞는 객체를 생성하고 반환합니다.(사실 이는 디자인 패턴 보다는 메소드 추출이라고 본다.)

팩토리 메소드 패턴
팩토리 메소드 패턴에서는 객체 생성을 위한 인터페이스를 정의하지만 실제 객체의 생성은 서브 클래스가 담당한다.

- Product : 생성되는 객체가 가지고 있어야할 인터페이스를 결정하는 추상 클래스
- Concrete Product : 객체의 생성 로직을 정의하는 구상 객체
- Factory : Product 클래스를 생성하는 추상 클래스.
- ConcreteFactory : Product 클래스를 생성하는 메소드를 구현한 구상 클래스
이를 통해 client코드가 조건을 넘겨주면 Factory는 그 조건에 맞는 생성자를 호출하는 역할만 하게 되고 특정 객체가 어떻게 생성되는지 알 수가 없다. 해당 내용은 Product를 구현한 구상클래스들 속에 있기 때문이다.
구현 : https://github.com/RicardoKim/DesignPatter-Go-/tree/main/factory/factory_method
추상 팩토리 패턴
추상 팩토리 패턴은 여러 군집의 생성 로직을 관리하는데 있어서 강점을 가진다. 생성을 책임지는 팩토리를 추상클래스로 정의하고 각자의 군집에 해당하는 팩토리를 생성하고 각 군집의 Product를 관리한다. Client는 필요에 따라 이들을 조합하여 사용하게 된다.

구현 : https://github.com/RicardoKim/DesignPatter-Go-/tree/main/factory/abstract_factory
'Computer Science > 디자인패턴' 카테고리의 다른 글
[디자인 패턴] 템플릿 메서드 패턴 (1) | 2024.03.31 |
---|---|
[디자인 패턴] 어댑터 패턴 (0) | 2024.03.23 |
[디자인 패턴] 커맨드 패턴 (2) | 2024.03.18 |
[디자인 패턴] 데코레이터 패턴 (0) | 2024.03.02 |
[디자인 패턴] 옵저버 패턴 (0) | 2024.02.25 |