• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Spring에서 자주 쓰이는 디자인 패턴 5
        2022년 11월 05일
        • starryeye
        • 작성자
        • 2022.11.05.:30

        프록시 개념을 사용한 프록시 패턴에 이어서..

        똑같이 프록시 개념을 사용하는 데코레이터 패턴에 대해 알아 보자...

         

        데코레이터 패턴은

        프록시 개념 중, 부가 기능을 추가한다는 의도를 담고있는 패턴이다.

         

         

        역시 예제를 통해 알아보자..

        똑같이 프록시 개념을 사용하므로..

        프록시 패턴과 구조는 동일하다..

        (프록시 체인 개념도 함께 알아보자.)

         

        위는 각각 클래스 의존관계와 런타임 객체 의존 관계이다.

        프록시는 TimeDecorator, MessageDecorator 두개이며..

        실제 Target 객체는 RealComponent 클래스이다.

         

         

        Componet는...

        부가기능을 수행할 MessageDecorator 클래스, TimeDecorator 클래스와

        실제 객체인 RealComponent의 인터페이스이다.

         

         

        실제 객체인 RealComponent는 Component 인터페이스를 구현 하고 있다.

         

         

        TimeDecorator 는 실제 객체와 동일하게 Component 를 구현하고 있다.

        Component를 생성시점에 하나 주입 받는다.

         

        operation 메서드에서 Component 의 operation 메서드를 부르며...

        부가기능(componet의 메서드가 수행되는 시간을 측정)을 수행한다.

         

        component의 반환값을 그대로 반환해준다.

         

        TimeDecorator와 동일하게 component를 주입받아 가지고 있으며..

        Component를 구현하고 있다.

        오버라이딩한 operation에서 component의 반환 값을 그대로 반환하지 않고..

        살짝 수정한 값을 반환해준다.

         

         

        Client의 동작과 Component간 주입되는 코드를 알아보자..

        위에서 런타임시 객체 의존 관계 다이어그램과 동일하게..

        서로 서로 주입되고 있는 것을 보고있다.

         

        client의 execute 메서드를 호출하면..

        차례로..

        프록시인 timeDecorator의  operation 메서드..

        프록시인 messageDecorator의 operation 메서드..

        실제 객체인 realCompoenet의 operation 메서드가 호출 되고 반환은 역순으로 진행 될 것이다.

         

        프록시가 프록시를 호출하여 이를 프록시 체인이라 부른다.

         

        프록시 패턴과 데코레이터 패턴은 구조적으로는 동일하므로

        쉽게 이해가 될 것이다.

         

         

        <참고>

        프록시 객체가 두개이고..

        프록시 객체 코드에서 중복되는 코드들이 있다..

        (프록시 객체의 생성자와 맴버변수 선언)

        -> 이를 추상클래스로 하나로 모아서 중복 되는 코드를 최소화 할 수도 있다.

         

        구조는 아래와 같다.

         

        'Spring > Core' 카테고리의 다른 글

        Spring에서 프록시 사용 2  (0) 2022.11.14
        Spring에서 프록시 사용 1  (0) 2022.11.05
        Spring에서 자주 쓰이는 디자인 패턴 4  (0) 2022.11.05
        Spring에서 자주 쓰이는 디자인 패턴 3  (0) 2022.11.05
        Spring에서 자주 쓰이는 디자인 패턴 2  (0) 2022.10.20
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바