❓팩토리 패턴
팩토리 패턴은 생성 패턴중에서도 가장 기본이 되는 패턴이라고 합니다. 객체 생성 처리를 위임하여 객체 지향의 문제점을 해결할 수 있다고 하네요. 객체 생성을 담당하는 동작을 별도의 클래스 혹은 별도의 메서드로 분리하여 객체의 생성 동작을 위임하는 것을 말합니다.
즉 객체의 생성을 캡슐화 한다는 것!
❓팩토리 패턴의 장점
팩토피 패턴은 객체 지향의 문제점을 해결해 준다고 할 수 있습니다. new 연산자를 사용해 직접 객체를 생성하는 것은 ‘강력한 결합’을 만들어 낼 수 있습니다. 팩토리 패턴을 통해 ‘느슨한 결합’으로 만들어 의존성을 떨어뜨릴 수 있다는 것입니다.
❗팩토리 패턴의 예시 (JS)
class Korean {
greeting () {
return "안녕하세요"
}
}
class App {
static getInstance(){
const KR = new Koran();
return KR.greeting();
}
}
위 코드를 팩토리 패턴을 통해서 다음과 같이 만들 수 있습니다.
class Korean {
greeting () {
return "안녕하세요"
}
}
class Factory {
static getInstance(){
return new Korean();
}
}
class App {
static getInstance(){
const KR = Factory.getInstance();
return KR.greeting();
}
}
이렇게 바뀐 코드만 놓고 보면 코드가 쓸데없이 길어진 것 같습니다. 왜 사용하는지 잘 모르겠네요. 그렇다면 생성할 객체가 많아진다면 어떨까요?
class Korean {
greeting () {
return "안녕하세요"
}
}
class English {
greeting () {
return "Hello"
}
}
class App {
static getInstance(type){
let instance
if(type === "kr"){
instance = new Korean();
}
if(type === "en"){
instance = new English();
}
return instance.greeting();
}
}
이 코드에 팩토리 패턴을 적용 해 보겠습니다.
class Korean {
greeting () {
return "안녕하세요"
}
}
class English {
greeting () {
return "Hello"
}
}
class Factory{
static getInstance(type){
if(type === "kr"){
return new Korean();
}
if(type === "en"){
return new English();
}
}
}
class App {
static getInstance(type){
const INSTANCE = Factory.getInstance(type)
return INSTANCE.greeting();
}
}
개인적으로 이렇게 객체의 개수가 늘어남에 따라 팩토리 패턴이 효과를 느낄 수 있었다고 생각합니다. 객체가 극단적으로 늘어났을 때의 경우라면 팩토리 패턴을 통해 안정적인 코드를 만들 수 있겠네요!
'개발 상식 > 디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 프로토타입(Prototype) 패턴 (0) | 2023.11.11 |
---|---|
[디자인 패턴] 빌더(Builder) 패턴 (0) | 2023.11.11 |
[디자인 패턴] 추상 팩토리(Abstract Factory) 패턴 (0) | 2023.11.10 |
[디자인 패턴] 팩토리 메서드(Factory Method) 패턴 (0) | 2023.11.09 |
[디자인 패턴] 싱글턴(Singleton) 패턴 (0) | 2023.11.08 |