author
postNo
status
thumbnail
description
category
tags
createdAt
updatedAt

프록시 패턴(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과 동일한 기능을 하면서 조회수를 추가할 수 있다.