팩토리 패턴 (Factory Pattern)

천둥상어

·

2023. 12. 23. 20:24

반응형

팩토리패턴_썸네일

객제 지향 언어에서 new 라는 키워드로

생성된 객체는 결합 관계가 강력한 코드이다.

 

이것을 의존성이라고 하는데,

팩토리 패턴은 이러한 의존성을

느슨하게 만들어 코드의 가독성을 높이고

유연성을 올려주는 디자인 패턴이다.

 

팩토리 패턴 기본 개념

팩토리 패턴은 객체 생성을 담당하는

별도의 팩토리 클래스를 정의하고

이 클래스를 통해 객체를 생성한다.

 

즉, 클라이언트 코드에서 직접 new를 통한

객체를 생성하지 않고

팩토리 클래스에 생성을 위임 하는 것이다.

 

팩토리 패턴 구현

캔버스 태그에 도형을 그려야 하는 코드를

프로그래밍 한다고 가정해 보자.

 

도형의 모양이 사각형이라면

사각형 클래스(Rect Class)로 생성을 하고

원형이라면 원형 클래스(Circle Class)로

생성을 해야 한다.

 

여기에 팩토리 패턴을 적용하면 아래와 같이

팩토리 클래스와 클라이언트 코드가 정의 된다.

 

팩토리 클래스

ShapeFactory 클래스

import {Rect, Circle} from "./Shape";

export default class ShapeFactory {

    static getInstance(type)
    {
        switch(type)
        {
            case 0 :
                return new Rect();
                break;
            case 1 :
                return new Circle();
                break;
            default :
                break;
        }
    }
}

 

Shape 클래스

export class Rect {
    constructor()
    {
        console.log('Rect');
    }
}

export class Circle {
    constructor()
    {
        console.log('Circle');
    }
}

 

클라이언트 코드

const shape0 = ShapeFactory.getInstance(0);
const shape1 = ShapeFactory.getInstance(1);
console.log(shape0); // Rect{}
console.log(shape1); // Circle {}

 

팩토리 패턴의 장단점

장점

  • 유연성과 확장성
    객체 생성 로직을 한 곳에 집중할 수 있다.
    팩토리 클래스에서 객체 유형을 추가하거나
    수정하면 되기 때문에 유연성과 확장성이
    개선된다.
    어떤 객체가 생성될지 모르는 초기 단계라면
    팩토리 클래스만 생성하고
    클래스를 확장하면 된다.
  • 코드 분리
    객체 생성 코드가 클라이언트 코드와
    분리되기 때문에 유지 보수가 좋고
    중복된 코드도 정리할 수 있어
    코드의 가독성이 올라간다.
  • 캡슐화
    객체 생성의 복잡한 로직이 숨겨지기 때문에
    클라이언트에서는 객체를 요청만 하면 된다.

단점

  • 관리 파일 증가
    객체 생성을 담당하는 클래스를 새로
    생성해야 한다.
    이는 관리할 클래스가 늘어나는 것을 의미한다.
반응형

'프로그래밍 > JavaScript 디자인 패턴' 카테고리의 다른 글

싱글턴 패턴 (Singleton Pattern)  (0) 2023.12.30