728x90 반응형 CS Study175 22-04-17-프록시패턴-4부-자바와스프링에서찾아보는패턴 01.자바코드 다이나믹 프록시, java.lang.reflect.Proxy 01.1 다이나믹 프록시 런타임에서 프록시를 제공하는 것 애플리케이션이 실행중에 인스턴스를 동적으로 만들수 있는 방법 02.스프링 스프링 AOP 여러코드에 흩어질 수있는것을 모아서 코딩해줄 수 있는 기법 퍼포먼스 측정을 다른곳에서 해야하는 경우 성능 측정하는것만 따로 모아놓는것 https://github.com/3DPIT/3dpit.github.io/blob/master/_posts/DesignPattern/22-04-17-%ED%94%84%EB%A1%9D%EC%8B%9C%ED%8C%A8%ED%84%B4-4%EB%B6%80-%EC%9E%90%EB%B0%94%EC%99%80%EC%8A%A4%ED%94%84%EB%A7%81%EC%97.. 2022. 4. 17. 22-04-17-프록시패턴-3부-장점과단점 01.장점과단점 01.1 장점 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있음 기존 코드가 해야 하는 일만 유지할 수 있음 open closed principle를 만족 기능 추가 및 초기화 지연 등으로 다양하게 활용할 수 있다. 01.2 단점 기존 코드가 단순한 클래스로 되어있으면 만들어야하는것이 많음 상속으로도 가능하지만 또는 그 상속을 해야하는 클래스가 final인 경우 상속을 못하기 때문에 왠만하면 인터페이스로 만들어서 해야함 코드가 복잡해지고 증가함 https://github.com/3DPIT/3dpit.github.io/blob/master/_posts/DesignPattern/22-04-17-%ED%94%84%EB%A1%9D%EC%8B%9C%ED%8C%A8%ED%84%B4-3%EB%.. 2022. 4. 17. 22-04-17-프록시패턴-2부-패턴적용하기 01.프록시패턴 적용 01.1 코드 수정 없이 적용하기 GameServiceProxy 추가 public class GameServiceProxy extends GameService{ @Override public void startGame(){ long before = System.currentTimeMillis(); super.startGame(); System.out.println(System.currentTimeMillis()-before); } } before public class Client{ public static void main(String[] args){ GameService gameService = new GameService(); gameService.startGame(); } }.. 2022. 4. 17. 22-04-17-프록시패턴-1부-패턴소개 01.프록시패턴 스프링을 한번쯤 공부했던 사람이라면 들어본 패턴 중 하나 특정한 객체의 오퍼레이션들을 접근하기 전에 프록시 객체를 지나서 접근하는 패턴 프록시 대리, 대리인의 의미를 가진 클라이언트가 직접 객체를 쓰지 않고 대리인을 거쳐서 사용하는 것 그 클래스 직접안쓰고 프록시를 거쳐서 사용 요청자체를 프록시가 무조건 받음 좋은 이유 해당 객체에 대한 접근 제어, 권한이 있어야 접근할 수 있도록 그 객체가 생성하는 데 많은 리소르를 필요로하는 인스턴스라면 최초로 쓰일때 초기화를 지연할 수 도 있음 로깅, 캐싱을 적용할 수 있음 이를 통해 성능적 장점을 가져옴 02.코드로 보는 프록시 패턴 02.1 Client.java public class Client{ public static void main(St.. 2022. 4. 17. 이전 1 ··· 5 6 7 8 9 10 11 ··· 44 다음 728x90 반응형