프록시 패턴은 다른 어떤 인터페이스의 인터페이스로 동작하는 클래스이다.
다음과 같은 코드가 있다고 가정해보자.
코드는 회사에 임직원을 추가하는 코드이다.
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
과 동일한 기능을 하면서 조회수를 추가할 수 있다.