디자인패턴

디자인패턴

    프록시와 데코레이터 패턴

    프록시와 데코레이터 패턴 이번에 배울 디자인 패턴은 프록시 패턴이다. GOF 의 디자인 패턴에서 프록시 패턴은 크게 프록시 패턴과 데코레이터 패턴으로 나뉜다. 자세히 배워보자. 프록시 패턴 프록시(Proxy)는 대리자라는 의미를 갖고 있다. 의미만 봤을때 어떤 일을 대신 해준다라는 느낌을 받을 수 있다. 요청하는 쪽이 Client, 응답하는 쪽이 Server 라고 하자. (보통 이렇게 부른다.) Proxy 가 없는 경우에는 Client 와 Server 의 관계가 다음과 같다. 위 경우를 직접 호출이라고 부른다. Proxy 가 도입되면 다음과 같다. 위 경우를 간접 호출이라고 부른다. 예시 프록시의 예시를 보자. 카페에 들어가서 손님이 캐셔에게 커피 주문을 한다. 캐셔는 바리스타에게 커피를 만들어 달라고 ..

    전략 패턴과 템플릿 콜백 패턴

    전략 패턴(Strategy Pattern) 이전 시간에 템플릿 메서드 패턴을 이용하여 AI Seller 의 발주 자동화를 구현해봤다. 하지만 템플릿 메서드 패턴의 상속으로 인한 결합도 증가 및 서브 클래스에서 불필요한 메서드 구현 등의 단점으로 인해 소스를 수정해야하는 상황이다. 이번 시간에 전략 패턴(Strategy Pattern)을 이용하여 AI Seller 의 발주 자동화 기능을 좀 더 유연하게 구현해볼 것이다. 전략 패턴 구현 예제는 '템플릿 메서드 패턴'에서 다룬 예제를 그대로 사용합니다. 디자인 원칙과 정의 디자인 원칙 상속 보다는 구성(Composition)을 사용하라. 정의 전략 패턴은 한 유형의 알고리즘을 보유한 상태에서 런타임에 적절한 알고리즘을 선택하는 기법이다. 전략을..

    템플릿 메서드 패턴

    템플릿 메서드 패턴(Template Method Pattern) 템플릿(Template) 이라는 단어에서 알 수 있듯이, 템플릿 메서드 패턴은 어떤 작업 알고리즘의 골격을 정의한다. 공통 기능과 세부기능을 갖도록 구현할 수 있으며, 세부 기능은 서브 클래스마다 달라질 수있다. 즉, 템플릿 메서드를 이용하면 알고리즘의 구조를 그대로 유지하면서 특정 단계만 서브 클래스에서 새로 정의하도록 할 수 있다. 생성 단계 상위 클래스(알고리즘 골격)를 캡슐화 한다. 서로 공통점이 있는 메서드를 일반화 하여 새로 만든다. 어떤 알고리즘에 대한 템플릿 역할을 메서드가 한다. 서브클래스에서 특정 알고리즘에 선택적으로 적용되야 하는 경우에는 후크(hook) 를 사용한다. AI Seller 지금으로부터 5년뒤, 높은 임금 문..