728x90

Computer Science/디자인 패턴 4

프록시(Proxy) 패턴에 대해 알아보자.

프록시 패턴(Proxy Pattern)? 특정 객체로부터의 "접근을 제어"하는 대리인(객체)을 제공한다. 어떤 객체를 사용하려고 할 때, 객체를 직접 참조하는 것이 아니라 해당 객체에 대응하는 일종의 대리인 역할을 하는 객체를 통해서 대상에 접근하는 방식으로, 직접 참조하려던 객체가 메모리에 존재하지 않아도 기본적인 정보 참조나, 실제 사용 시점까지 생성 시점을 미루는 등의 행위가 가능해진다. 대표적인 세 가지 종류 원격 프록시 다른 JVM 상에서 존재하는 객체를 대신하는 로컬 객체를 만들어 사용한다. 로컬 객체에 있는 프록시 메서드를 호출하게 되면 원격 객체의 메서드를 호출하여 관련 작업을 처리하고 이 처리 결과를 넘겨받아서, 실제 로컬 환경에 원격 객체가 존재하는 것처럼 동작하게 하는 방법이다. 가상..

전략 패턴(Strategy Pattern)

Strategy Pattern이란? 교환이 가능한 객체를 정의하고, 런타임에 설정하고 변환하는 패턴 같은 문제를 해결하는 여러 알고리즘을 클래스별로 캡슐화하고 필요에 따라 교체할 수 있는 설계로, 이를 런타임에 수행할 수 있게 하려는 패턴이다. 예시 그림과 예시 그림에 있는 용어들에 대해서 정리하고 가자. Strategy 인터페이스나 추상 클래스로 외부에서 동일한 방법으로 알고리즘을 호출하는 방법을 명시 ConcreteStrategyA, B, C 앞서 설계한 추상 클래스 혹은 인터페이스를 필요 기능에 따라 실제 구현한 클래스 Context 전략 패턴을 이용하는 역할을 수행한다. 필요에 따라서, 동적으로 구체적인 전략을 바꿀 수 있는 setter를 제공한다. 사용하는 쪽에서는 Strategy만 바꿔주면 코..

템플릿 메서드 패턴(Template Method Pattern)

템플릿 메서드 패턴(Template Method Pattern) 슈퍼 클래스에서는 알고리즘의 구조를 정의한다. 서브 클래스에서는, 슈퍼 클래스가 정의한 구조는 변경하지 않고 그 내용만 오버라이딩한다. 알고리즘이 동일하여 같은 역할을 하는 메서드들이 여러 벌 생성될 수 있지만, 세부 구현은 다른 형태로(DB만 다르거나, 주고 받는 내용만 다르거나...) 이루어진 경우에 유용하다. 대부분 어떤 것을 만드는 클래스들로(XXXMaker, XXXBuilder) 구현하면서 예시를 드는데, 샌드위치 메이커라는 컨셉으로 한 번 구현해봤다. 샌드위치는 안에 들어가는 재료가 저마다 다르고, 빵의 끝을 잘라낼 수도 있고, 먹기 편하게 아예 반으로 자를 수도 있고 다양한 형태로 조리될 수 있다. 만드는 과정이나 재료는 여러모..

옵저버 패턴(관찰자 패턴, Observer Pattern)에 대해 알아보자

옵저버 패턴(Observer Pattern)? 어떤 클래스(들)의 동작이 특정 상태 변화에 따라서 동작해야 하는 경우를 생각해보자. 예를 들어서, 어떤 구독 서비스를 이용하는 유료 회원과 무료 회원이 존재한다. 구독한 유료 회원에게만 신규 콘텐츠가 등록되면 뉴스 레터 형태의 알림이 전송되어야 한다. 이런 상황에서 무료 회원은 반드시 해당 서비스의 페이지에 들어가서 신규 콘텐츠가 존재하는지를 확인해야 한다. 유료회원은 구독 서비스가 전송한 뉴스 레터를 통해서도 확인할 수 있는 추가적인 방법이 생기는 셈이다. 이 때, 구독 서비스가 새로운 내용(콘텐츠)가 등록되었을 때 모든 유저들에게 뉴스 레터를 전송하는 방식을 구성하는데 적용해볼 수 있는 것이 옵저버 패턴이다. 여기서 유료 회원은 Observer고, 신규..

728x90