삽질 주도 개발
article thumbnail
GoF Design Pattern - Proxy Pattern
Architecture 2022. 11. 21. 18:12

GoF Structural Pattern에 해당하는 Proxy Pattern에 대해서 알아보자. GoF 책에서는 다음과 같이 프록시 패턴의 의도를 밝힌다. 다른 객체에 대한 접근을 제어하기 위한 대리자 또는 자리채움자 역할을 하는 객체를 둡니다. 구조는 다음과 같다. Subject 구현체(Proxy)로 Request() 함수를 호출할 때 RealSubject를 참조하고 있는 Proxy가 RealSubject를 대리하는 구조이다. 프록시를 사용하면 다양한 역할을 수행할 수 있다. 메서드 실행 이전 이후에 대한 처리, 캐싱, lazy loading 등 다양한 역할을 한다고 한다. 오늘은 메서드 실행 이전 이후에 대한 로그 그리고 lazy loading에 대해서 간단한 예시를 들어 이해해보려고 한다. 주문을 ..

GoF Design Pattern - Template Method Pattern
Architecture 2022. 11. 15. 20:39

GoF Behavioral Pattern에 해당하는 Template Method Pattern에 대해서 알아보자. GoF 책에서는 다음과 같이 패턴의 의도를 밝힌다. 객체의 연산에는 알고리즘의 뼈대만을 정의하고 각 단계에서 수행할 구체적 처리는 서브클래스 쪽으로 미룹니다. 알고리즘의 구조 자체는 그대로 놔둔 채 알고리즘 각 단계 처리를 서브클래스에서 재정의할 수 있게 합니다. 예시 코드 위의 코드를 보면 커피를 만드는 절차 그리고 차를 만드는 절차를 구현하고 있다. 커피나 차를 만드는 절차 중 boil과 pour, add는 똑같이 필요한 절차이다. 그렇다면 그 외에 행위들은 마실 것에 따라 행위가 달라지는데, 절차(뼈대)는 수퍼 클래스에서 추상화하고, 이러한 행위를 서브클래스에서 구체화하는 것이다. 그렇..

GoF Design Pattern - Adapter Pattern
Architecture 2022. 11. 15. 20:22

GoF Structural Pattern에 해당하는 Adapter Pattern에 대해서 알아보자. GoF 책에서는 다음과 같이 패턴의 의도를 밝힌다. 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 변환 시킵니다. 서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작시킵니다. 어탭터 패턴은 정말 어댑터를 생각하면 이해하기 쉬운 개념이다. adapter: 다른 전기나 기계 장치를 서로 연결해서 작동할 수 있도록 만들어 주는 결합 도구 즉, 중간 다리(어댑터)를 연결해서 다른 인터페이스를 호환할 수 있도록 하는 디자인이다. 예시 코드 아래의 코드에서 특정 시스템에 Duck이 아닌 Turkey를 사용하고자 하는데, Duck이 이미 많은 사용자가 사용하고 있는 상황이라면? public class..