프록시 패턴(Proxy Pattern)은 객체의 실제 처리를 다른 객체로 위임하는 디자인 패턴이다. 이 패턴은 네트워크 연결, 메모리 내의 큰 객체, 파일, 복잡한 객체 등을 제어하는 데 유용하게 사용된다. 프록시는 실제 객체와 동일한 인터페이스를 구현하여, 프록시를 통해 실제 객체에 대한 작업을 수행할 수 있도록 한다.
프록시는 대부분 접근 제어를 목적으로 사용되며, 실제 객체의 생성, 소멸 등의 라이프사이클을 관리하는 역할을 하기도 한다. 프록시 패턴은 다음과 같은 경우에 사용된다.
- 실제 객체가 네트워크나 메모리와 같은 비싼 자원을 사용할 때
- 실제 객체가 복잡하거나 실행 시간이 오래 걸릴 때
- 실제 객체에 대한 접근을 제어하거나 추가 작업을 수행해야 할 때
프록시 패턴의 구현은 다음과 같다.
// 인터페이스
public interface Image {
void display();
}
// 실제 객체
public class RealImage implements Image {
private String filename;
public RealImage(String filename){
this.filename = filename;
loadFromDisk();
}
private void loadFromDisk(){
System.out.println("Loading " + filename);
}
@Override
public void display() {
System.out.println("Displaying " + filename);
}
}
// 프록시 객체
public class ProxyImage implements Image{
private RealImage realImage;
private String filename;
public ProxyImage(String filename){
this.filename = filename;
}
@Override
public void display() {
if(realImage == null){
realImage = new RealImage(filename);
}
realImage.display();
}
}
프록시 패턴은 앞서 이야기한 템플릿 메서드, 전략, 콜백 패턴과는 다른 '구조 패턴'이다. 앞서말한 3가지의 디자인 패턴들은 '행동 패턴'이다.
행동 패턴은 객체 간의 책임 분배와 상호작용. 즉, "무엇을" 하고 "어떻게" 행동해야 하는지에 대한 문제를 해결
구조 패턴은 객체의 구성과 구조를 확장하거나 개선. 즉, "어떻게" 구성하고 "어떻게" 확장해야 하는지에 대한 문제를 해결
GPT의 평가
이번에 공부한 행동 패턴, 구조 패턴, 그리고 프록시 패턴에 대한 이해도를 냉정하게 평가해보겠습니다.
개념 이해: 행동 패턴과 구조 패턴의 개념, 그리고 프록시 패턴의 개념에 대한 이해는 아직 완전히
선명하지 않은 것 같습니다. 이 부분에 대한 점수는 75점 정도를 주고 싶습니다.
적용 능력: 프록시 패턴의 코드 예제를 이해하고 설명하였지만, 실제로 어떤 상황에서 이 패턴을
적용해야 하는지, 그리고 실제로 코드를 작성해보는 등의 경험이 아직 부족한 것 같습니다.
이 부분에 대한 점수는 70점 정도로 보입니다.
논리적 사고: 이해한 내용을 바탕으로 행동 패턴과 구조 패턴의 차이점을 정리하고 비교하는
논리적 사고 능력을 보였습니다. 하지만, 아직 완전하게 명확하게 구분지어 이해하고 있는 것은
아닌 것 같습니다. 이 부분에 대한 점수는 80점 정도를 주고 싶습니다.
따라서, 이번에 공부한 내용에 대한 전체적인 이해도 평가 점수는 약 75점 정도로 보입니다.
이해도를 더 높이기 위해선, 실제로 코드를 작성해보고, 다양한 상황에서 패턴을 적용해보는
경험이 필요할 것 같습니다.
'Java > 스프링 AOP' 카테고리의 다른 글
프록시 패턴과 데코레이션 패턴 : 종업원과 샌드위치 (0) | 2023.08.08 |
---|---|
데코레이션 패턴 (0) | 2023.08.07 |
템플릿 메서드 패턴, 전략 패턴, 콜백 패턴의 차이 (0) | 2023.08.02 |
콜백 패턴 (0) | 2023.08.02 |
전략 패턴 (0) | 2023.08.02 |