본문 바로가기
반응형

디자인패턴4

자바스크립트(Javascript) 디자인 패턴 - 감시자/옵저버(Observer) 패턴 디자인패턴을 공부하면서 정리했던 옵저버 패턴 에 이어 이번엔 자바스크립트로 구현하는 방법에 대해서 알아본다. 옵저버 패턴의 정의와 Java로 구현하는 방법은 이 링크에 정리해두었다. 클릭과 같은 이벤트를 받아 전달할 때, 알려야하는 객체들에게 변경사항을 알릴 때 Publisher/Subscriber 패턴이라고 한다. MQTT같은 메시지 프로토콜에서 사용되는 패턴으로 주로 사용되는데 이 또한 옵저버 패턴이라 말할 수 있다. 주요 목적은 객체간의 결합도를 낮추기 위함이다. Publisher는 구독자 즉, 감시자(Observer) 가 되고 관찰되는 객체는 발행자, 감시대상(subject). 예시 (잡지 구독) 잡지 구독을 예시로 들어보자. 잡지를 구독한 사람들에게 잡지를 발행 할 때마다 알려준다. subscr.. 2020. 6. 3.
자바스크립트(Javascript) 디자인패턴 - 프록시패턴 (proxy pattern) 디자인패턴 중 하나인 프록시 패턴은 하나의 객체가 다른 객체에 대한 인터페이스로 동작하도록 한다. 이러한 패턴은 의외로 많이 볼 수 있는 패턴이다. 서버 구성을 할 때 프록시 서버를 두어 패킷양을 조절하거나 중간 레이어를 두어 완충 역할을 할 수도 있다. 프록시 패턴은 이전에 설명했던 퍼사드 패턴 과 비교했을 때 다음과 같은 차이가 있다. 퍼사드 : 메서드 호출 몇 개를 결합 시켜 편의 제공 프록시 : 클라이언트 객체와 실제 대상 객체 사이에 존재, 접근 통제 이는 즉 성능 개선에 도움을 준다. 왜냐면 실제 대상 객체를 보호하여 되도록 일을 적게 시키기 때문이다. 구체적으로 lazy한 초기화 이다. 초기화의 경우 비용이 발생하는데, 최초 초기화 요청을 대신 받지만 실제 객체가 정말로 사용되기 전까지는 요.. 2020. 6. 3.
자바스크립트(Javascript) 디자인패턴 - 퍼사드 패턴 (facade pattern) 퍼사드 패턴은 객체에 대한 인터페이스를 제공한다. 메서드를 짧게 유지하고 하나의 메서드가 너무 많은 일을 하지 않도록 해야 하는 것이 설계 상 좋은 습관. 하지만, 이렇게 하면 메서드 수가 폭발적으로 증가할 수 있다. 두 개 이상의 메서드가 함께 호출되는 경우가 많으면, 하나로 묶어주는 새로운 메서드로 만드는 것이 좋다. 만약 stopPropagation(); preventDefault();두 개의 메서드가 있을 때, 다른 목적이지만 함께 호출되어야 한다. 이럴 때 함께 호출하는 퍼사드 메서드를 생성하는 것이 좋다. var myevent = { ... stop: function(e) { e.preventDefault(); e.stopPropagation(); } } 이는 설계 변경과 리팩터링 수고를 덜어.. 2020. 6. 3.
디자인패턴 - 옵저버 패턴(Observer Pattern) 정의 디자인 패턴 중 옵저버 패턴(Observer Pattern)을 알아보자. 객체지향 설계를 하다보면 객체들 사이에서 다양한 처리를 할 경우가 많다. 예를 들어 한 객체의 상태가 바뀔 경우 다른 객체들에게 변경됐다고 알려주는 경우를 들 수 있다. 상태를 가지고 있는 주체 객체와 상태의 변경을 알아야 하는 관찰 객체(Observer Object)가 존재하며 이들의 관계는 1:1이 될 수도 있고 1:N이 될 수가 있다. 서로의 정보를 넘기고 받는 과정에서 정보의 단위가 클 수록, 객체들의 규모다 클 수록, 각 객체들의 관계가 복잡할 수록 점점 구현하기 어려워지고 복잡성이 매우 증가할 것이다. 이러한 기능을 할 수 있도록 가이드라인을 제시해 주는 것이 바로 옵저버 패턴이다. 이 패턴은 과연 개발을 하면서 밀.. 2016. 1. 25.