디자인패턴(팩토리 패턴)

임효진·2022년 12월 30일
0

팩토리 패턴

팩토리 패턴은 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자
상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다.
상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가지고 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 더 많은 유연성을 갖게 된다.
또한 객체 생성 로직이 따로 분리되어 있기 때문에 코드를 리팩토링 하더라도 한 곳만 고칠 수 있게 되니 유지 보수성이 증가한다.

자바스크립트의 팩토리 패턴

자바스크립트에서 패곹리 패턴을 구현하다면 new Object()로 구현할 수 있다.

const num = new Object(42)
const str = new Object('abc')
num.constuctor.name; //Number
str.constuctor.name; //String

숫자를 전달하거나 문자열을 전달함에 따라 다른 타입의 객체를 생성하는 것을 볼 수 있다.
즉 전달받은 값에 따라 다른 객체를 생성하며 인스턴스 타입 등을 정한다.

전략 패턴

전략 패턴(strategy pattern)은 정책 패턴(policy pattern)이라고도 하며, 객체의 행위를 바꾸고 싶은 경우 '직접'수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다.

옵저버 패턴

옵저버 패턴(observer pattern)은 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴이다.
여기서 주체란 객체의 상태 변화를 보고 있는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 전돨되는 메서드 등을 기반으로 '추가 변화 사항'이 생기는 객체들을 의미한다.
(내가 어떤 사람인 주체를 팔로우 했다면 주체가 포스팅을 올리게 되면 알림이 팔로워에게 가는 구조)
옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며 MVC(Model-View-Controller)패턴에도 사용된다.

자바스크립트에서의 옵저버 패턴

자바스크립트에서의 옵저버 패턴은 프록시 객체를 통해 구현할 수도 있다.

프록시 객체

프록시 객체는 어떠한 대상의 기본적인 동작(속성 접근, 할당, 순회, 열거, 함수 호출 등)의 작업을 가로챌 수 있는 객체를 뜻하며 자바스크립트에서 프록시 객체는 두 개의 매개변수를 가진다.

  • target : 프록시할 대상
  • handle : 프록시 객체의 target 동작을 가로채서 정의할 동작들이 정해져 있는 함수
  const handler = {
    get : function(target,name)  {
      return name === 'name' ? `${target.a}` : target[name]
    }
  }
  const p = new Proxy({a:'HYOJIN', b:'IS AMUMU ZANGIN', hand

참고 : 면접을 위한 CS 전공지식 노트

profile
프론트 요정임

0개의 댓글

관련 채용 정보