본문 바로가기

java18

프록시, 데코레이터 패턴 프록시 패턴과 데코레이터 패턴 모두 프록시를 사용하는 방법이지만 GOF 디자인 패턴에서는 이 둘을 의도에 따라서 프록시 패턴과 데코레이터 패턴으로 구분한다. - 프록시 패턴 : 접근 제어가 목적일 때 - 데코레이터 패턴 : 새로운 기능 추가가 목적일 때 프록시의 주요 기능 프록시를 통해서 할 수 있는 일은 크게 2가지로 구분할 수 있다. 접근 제어 권한에 따른 접근 차단 캐싱 지연로딩 부가 기능 추가 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행한다. ex : 요청 값이나, 응답 값을 중간에서 변경하거나 ex : 실행 시간을 측정해서 추가 로그를 남기거나 프록시 패턴 코드 정리 : 프록시 패턴의 핵심은 RealSubject 코드와 클라이언트 코드를 전혀 변경하지 않고, 프록시를 도입해서 접근 제어.. 2022. 10. 9.
전략 패턴, 템플릿 콜백 패턴 아래는 템플릿 콜백 패턴 2022. 10. 8.
전략 패턴 템플릿 메서드 패턴은 부모 클래스에 변하지 않는 템플릿을 두고, 변하는 부분을 자식 클래스에 두어서 상속을 사용해서 문제를 해결한다. 전략 패턴은 변하지 않는 부분을 Context 라는 곳에 두고, 변하는 부분을 Strategy 라는 인터페이스를 만들고 해당 인터페이스를 구현하도록 해서 문제를 해결한다. 상속이 아니라 위임으로 문제를 해결한다. Context가 변하지 않는 템플릿 역할을 하고, Strategy는 변하는 알고리즘 역할을 한다. 알고리즘 제품군을 정의하고 각각을 캡슐화하여 상호 교환 가능하게 만든다. 전략을 사용하면 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘을 변경할 수 있다. Context는 내부에 Strategy strategy 필드를 가지고 있다. 이 필드에 변하는 부분인 St.. 2022. 10. 3.
템플릿 메서드 패턴 템플릿 메서드 패턴 : 부모 클래스에 변하지 않는 코드를 두고, 변하는 부분은 자식 클래스에서 상속과 오버라이딩을 사용해서 처리하는 패턴, 상속과 오버라이딩을 통한 다형성으로 문제를 해결함. 아래 코드에서 execute() 부분은 변하지 않는 부분이고, call()부분은 자식에서 상속받아서 사용할 변하는 부분이다. public abstract class AbstractTemplate { public void execute(){ long startTime = System.currentTimeMillis(); //비즈니스 로직 실행 call(); // 상속 //비즈니스 로직 종료 long endTime = System.currentTimeMillis(); long resultTime = endTime - s.. 2022. 10. 2.