본문 바로가기

메모장

221117 템플릿 매서드 패턴, 전략패턴, 프록시

728x90
728x90

템플릿 매서드 패턴과 비슷한 역할이면서도 상속의 단점을 제거하는 디자인 패턴이 전략패턴이다.

 

템플릿 매서드 패턴은 abstract 클래스를 사용하여

변하지 않는 부분을 메소드로 로직을 구성한 뒤 그 안에 call() 이라는 메소드를 실행시키게 하고

call()은 추상화 메소드로 만들어 자식한테 오버라이드 하게끔 하는 것이다.

 

전략패턴은 

변하지 않는 부분을 Context 라는 클래스로 만들고

변하는 부분을 interface Strategy 로 call() 메소드를 가지게 만든다.

 

비즈니스 로직(변하는 부분) 클래스는 Strategy를 구현받아 만들고

 

Context에서 Strategy를 의존한 채로 부가기능(변하지않는부분) + call + 부가기능(변하지않는부분)을 실행시킨다 

 

이 방식이 전략패턴이며, 이것은 스프링 의존관계 주입에서 사용하는 방식과 같다.

 

 

프록시를 사용하는 패턴은

프록시 패턴, 데코레이터 패턴이 있으며

프록시 패턴은 접근 제어에 사용

데코레이터 패턴은 기능 추가에 사용된다.

 

프록시 패턴은 Clinet 가 인터페이스인 Subject를 의존(주입)하게 만들고

Proxy와 , RealSubject 클래스를 만들 때는 인터페이스 Subject를 구현받아 만드는데 이때

RealSubject가 실제 로직을 구현하고

Proxy는 접근제어or부가 기능 후 Subject(구현체 RealSubject)를 주입 받아 사용하게 만든다

 

최종적으로 Client는 Subject를 주입받는데 이때 구현체는 Proxy를 구현받아 사용한다

 

동적프록시

(리플렉션) 클래스 정보를 가져올 수 있음

인터페이스는 jdk 동적 프록시를 사용

구체클래스는 cglib를 사용하여 동적프록시를 만듬

 

'메모장' 카테고리의 다른 글

Spring Cloud (Netflix Eureka) 정리  (0) 2023.02.01
221122 메모장  (0) 2022.11.22
221119 메모장 maria db 설치  (0) 2022.11.20
221116 메모장 -DB1편복습  (0) 2022.11.16
221115 정렬알고리즘  (0) 2022.11.15