일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Have a nice day.
- 자고 싶다
- I am Korean
- 네트워크
- SSAFY 화이팅
- amazon
- 우유아야
- LeetCode #릿코드 #좋은 하루 되세요 #Have a nice day
- SSAFY 10기 화이팅
- 자료구조
- 코로나 싫어요
- 아자아자 화이팅
- BFS
- 텐션 업 10기 화이팅
- Java 환경 설정
- Have a good day :)
- 우유가 옆으로 넘어지면 아야
- SeongSeobDang
- 모르고리즘
- 텐션 업 10기!
- DFS
- DP
- HAVE A GOOD DAY
- Hamming weight
- 우유가옆으로넘어지면아야
- 수학
- have a nice day
- SSAFY IM/A
- SSAFY 테스트
- Today
- Total
Hope Everyone Is Happy
5. 프록시 패턴 (Proxy pattern) 본문
재미있다~ 33 살짝 졸리다..
본 게시글은 책 : 면접을 위한 CS 전공지식 노트 (출판사 : 길벗, 주홍철 지음) 을 참조하여 작성하였습니다. + 구글링
♣ 프록시 패턴 ( Proxy pattern )?
책의 내용에 따르면, 프록시 패턴은 대상 객체(subject)에 접근 하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴입니다.
약간 문장이 어렵게 느껴져서 구글링을 조금 해보니, 어떠한 객체를 직접적으로 참조하는 것이 아닌 말그대로 Proxy(대리자) 역할을 가지는 객체를 하나 만들어서, 객체에 접근하게 하는 방법입니다.
(프록시는 원본 객체 대신 실행 해주는 흐름의 역할만 수행, 결과값을 조작시키거나 변경시키는 것은 X )
해당 패턴은 코드로 예시를 들면 훨씬 이해가 빠를 것 같아서 아래에 UML과 함께 보도록 하겠습니다.
♣ 예시 코드
package design05_ObserverPattern;
interface Image {
public void displayImage();
}
//on System A
class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadImageFromDisk();
}
private void loadImageFromDisk() {
System.out.println("Loading " + filename);
}
@Override
public void displayImage() {
System.out.println("Displaying " + filename);
}
}
//on System B
class ProxyImage implements Image {
private String filename;
private Image image;
public ProxyImage(String filename) {
this.filename = filename;
}
@Override
public void displayImage() {
if (image == null)
image = new RealImage(filename);
image.displayImage();
}
}
public class ProxyPatternTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Image image1 = new ProxyImage("HiRes_10MB_Photo1");
Image image2 = new ProxyImage("HiRes_10MB_Photo2");
image1.displayImage(); // loading necessary
image2.displayImage(); // loading necessary
}
}
▷ 코드 내 핵심 사항
1. 원본 객체와 프록시 객체의 displayimage 를 동일하게 하는 interface Image를 정의
2. 프록시 객체인 ProxyImage 내부에 본래 객체와 같은 이름의 메서드를 호출하여, 별도의 로직을 수행.
3. Main문에서 Client의 역할로 프록시를 통해 이미지 출력을 테스트
원본 객체에 직접 접근하지 않고 프록시 객체를 통해 이미지를 출력해보는 예제였습니다.
위의 글과 관련하여 추가적인 내용이나 피드백은 언제나 환영입니다 :)
'※ CS 스터디 > 디자인 패턴' 카테고리의 다른 글
7. MVC 패턴 (0) | 2023.08.02 |
---|---|
6. 이터레이터 패턴 (0) | 2023.08.02 |
4. 옵저버 패턴 (Observer Pattern) (0) | 2023.08.02 |
3. 전략 패턴 ( strategy pattern ) (0) | 2023.08.02 |
2. 팩토리 패턴 ( Factory Pattern ) (0) | 2023.08.02 |