일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- springboot
- javascript
- Design Patterns
- JVM
- db
- ubuntu
- IntelliJ
- Spring Batch
- 맛집
- jsp
- ReactJS
- redis
- Web Server
- Spring Boot
- laravel
- Git
- Spring
- devops
- java
- it
- tool
- 요리
- php
- Oracle
- elasticsearch
- jenkins
- Gradle
- linux
- AWS
- MySQL
Archives
- Today
- Total
아무거나
[Design Pattern] Proxy Pattern 본문
반응형
프록시 패턴(Proxy Pattern)
프록시 패턴은 쉽게 말해서 대리인
이라고 생각하면되고, 작업
을 나누어서 구현할 수 있다. 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것과도 인터페이스의 역할을 수행할 수 있다. 즉, 프록시는 결과값을 조작하거나 변경하면 안된다.
Client 요청을 proxy가 처리하고, proxy가 처리하지 못한곳은 실제 업무를 처리하는곳에서(=RealSubject) 처리하면 된다.
프록시 패턴 예시 - 1
먼저 Subject 인터페이스를 생성한다.
[Subject.java]
package com.bkjeon.proxy;
public interface Subject {
// 리소스가 적게 드는 일
void action1();
// 리소스가 많이 드는 일 (네트워크, 메모리가 많이 사용)
void action2();
}
업무를 처리할 Proxy 클래스를 구현한다.
[Proxy.java]
package com.bkjeon.proxy;
public class Proxy implements Subject {
private Subject real;
public Proxy(Subject real) {
this.real = real;
}
@Override
public void action1() {
System.out.println("간단한 업무 by 프록시");
}
@Override
public void action2() {
this.real.action2();
}
}
실제 업무를 처리할 RealSubject 클래스를 구현한다.
[RealSubject.java]
package com.bkjeon.proxy;
public class RealSubject implements Subject {
@Override
public void action1() {
System.out.println("간단한 업무 by 실제");
}
@Override
public void action2() {
System.out.println("복잡한 업무 by 실제");
}
}
메인 클래스를 구현한다.
[Main.java]
package com.bkjeon.proxy;
public class Main {
public static void main(String[] args) {
Subject real = new RealSubject();
Subject proxy1 = new Proxy(real);
Subject proxy2 = new Proxy(real);
proxy1.action1();
proxy2.action1();
proxy1.action2();
proxy2.action2();
}
}
결과
간단한 업무 by 프록시
간단한 업무 by 프록시
복잡한 업무 by 실제
복잡한 업무 by 실제
반응형
'Java & Kotlin > Java' 카테고리의 다른 글
조합(=combination) 구하기 (0) | 2020.05.16 |
---|---|
[Design Pattern] Command Pattern (0) | 2020.01.12 |
[Design Pattern] Flyweight Pattern (0) | 2020.01.12 |
[Design Pattern] Memento Pattern (0) | 2020.01.12 |
[Design Pattern] State Pattern (0) | 2020.01.10 |
Comments