작성
·
434
0
답변 2
7
나중에 강사님이나 더 잘하시는 분이 답변다시겠지만, 제가 이해한 바로는 이렇습니다.
동적 프록시를 적용하기 전에는, 어떤 클래스의 메소드에 시간 측정 기능을 프록시로 구현하기 위해서 해당 클래스의 프록시 클래스를 만들고 프록시 클래스에다가 시간 측정 로직을 추가했습니다
하지만 이렇게 직접 프록시 클래스를 만들면, 시간 측정 기능을 추가해야 되는 클래스가 100개 이면 해당
100개의 프록시 클래스를 직접 만들고 시간 측정 기능을 100개의 프록시 클래스에다가 중복으로 추가해야 됩니다
하지만 동적 프록시 기술을 사용하면 강사님이 말씀하셨다시피, 프록시 클래스를 수 없이 만들어야 하는 문제도 해결하고, JDK 동적 프록시의 경우 invocationHandler 구현체에다가 프록시 클래스에 적용할 로직을 구현하면 됩니다
그러면 동적 프록시를 사용하기 전에 있던 100개의 프록시 클래스에 있던 시간 측정 로직이 한 개의 invocationHandler 구현체에 들어가서 향후 변경이 있을 때 간편하게 변경 가능합니다
0
안녕하세요
pj5016님 제가 이해하고있는 지식이 도움이 되고자 답변 드립니다.
부가 기능 로직도 하나의 클래스에 모아서 단일 책임 원칙(SRP)도 지킬 수 있게 되었다. 부분이 이해가 잘 안되신다고 말씀하셨는데, 제가 이해한 내용은 다음과 같습니다.
기존에는 동일한 기능(로그 추적)을 하는 클래스를 구현했습니다. (이 말은 현재 동일한 기능을 하는 여러개의 클래스를 구현하고 있다는 의미 입니다.)
하지만 동적 프록시 기술을 사용함으로써 동일한 기능을 하는 클래스를 1개만 만들고 관리할 수 있다는 의미로 SRP를 지킬 수 있다고 말씀하신 것 같네요.
(동일한 기능을 하는 클래스를 여러개 만들 필요는 없으니까요ㅎㅎ)
감사합니다.