Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 0으로 채우기
- time complexity
- 프로그래머스 옹알이 java
- 네트워크
- Math.ceil()
- Algorithm
- 프로그래머스 연속된 수의 합 java
- 백준 11723
- Arrays
- 백준 18290
- 코딩테스트
- 백준 16935
- 백준 15661
- Codility
- java 내림
- 백준 17425
- Math.floor()
- mysql
- 자바
- 알고리즘
- java 올림
- java
- 프로그래머스 도둑질 java
- java 반올림
- 백준 4375
- 백준 14391
- sort
- 프로그래머스 네트워크 java
- 프로그래머스 숫자의 표현 java
- 백준 16927
Archives
- Today
- Total
취미처럼
[DP] 프록시 패턴 본문
프록시 패턴(proxy pattern)
대상 객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴
이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다.
프록시 패턴을 간단하게 정리하자면 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴
import java.util.*;
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();
}
}
class ProxyExample {
public static void main(String[] args) {
Image image1 = new ProxyImage("HiRes_10MB_Photo1");
Image image2 = new ProxyImage("HiRes_10MB_Photo2");
image1.displayImage(); // loading necessary
image2.displayImage(); // loading necessary
}
}
'Design Pattern' 카테고리의 다른 글
[DP] 데코레이터 패턴 (0) | 2021.03.19 |
---|---|
[DP] 빌더 패턴 (0) | 2021.03.19 |
[DP] 옵저버 패턴 (0) | 2021.03.19 |
[DP] 전략 패턴 (0) | 2021.03.19 |
[DP] 팩토리 패턴 (0) | 2021.03.19 |
Comments