프록시 패턴(Proxy Pattern)
디자인패턴 공부하기
  • JavaScript

프록시 패턴(Proxy Pattern)

프록시 패턴은 다른 어떤 인터페이스의 인터페이스로 동작하는 클래스이다.

예제

다음과 같은 코드가 있다고 가정해보자.
코드는 회사에 임직원을 추가하는 코드이다.

const Complay = () => {
    const Employees = {
        '길동': '010-1111-1111',
        '짱구': '010-1111-2222',
        '철수': '010-1111-3333',
    }
};

Complay.prototype.get = function(name, callback) {
  var self = this;
  callback(self.Employees[name]);
}

이러한 함수가 있다고 가정해보자.
최근 회사의 임직원을 get 할 때마다 조회수를 추가해달라는 요청이 있다.
기존 코드를 수정해도 되겠지만, 사이드이펙트를 고려해서 그렇게 하고싶지는 않다.

이러한 경우에 Complay를 감싸서 프록시 패턴을 사용하여 구현할 수 있다.

const complayProxy = () => {
    const company = new Complay();
    let viewCount = 0;

    const get = (name, callback) {
        viewCount++;
        complay.get(name, callback);
    };

    const getViewCount = () => {
        return viewCount;
    };
};

이렇게 Proxy 함수를 구성해주면 complayProxy.get('xxx', callback)을 통해 기존 get과 동일한 기능을 하면서 조회수를 추가할 수 있다.