프록시 패턴
- 예를들어, A객체는 리소스(메모리, 디스크, ...)를 많이 사용하지만, 그러한 리소스를 사용하지 않고 간단한 함수를 호출할 경우도 있다. 이럴 경우엔 프록시(대리자)를 두어서 간단한 일은 프록시가 처리하고, 무거운 일은 실제 객체를 생성하여 처리할 수 있도록 하여 성능 향상을 꾀한다.
- 간단한 일을 사용할 때는 프록시에서 처리하고 , 복잡하고 중요한 일을 할때는 실제 클래스를 가져와서 수행하도록 한다.
package com.hooney.samsung;
public interface Service {
public void importantMethod();
public void simpleMethod();
}
package com.hooney.samsung;
public class 서비스구현 implements Service {
int k = 0;
@Override
public void importantMethod() {
// TODO Auto-generated method stub
for (int i = 0; i < 10000; i++) {
for (int j = 0; j < 100000; j++) {
k++;
}
}
}
@Override
public void simpleMethod() {
// TODO Auto-generated method stub
System.out.println("간단한 일");
}
}
package com.hooney.samsung;
public class 프록시 implements Service{
private Service s;
@Override
public void importantMethod() {
// TODO Auto-generated method stub
try {
s = (Service) Class.forName("서비스구현").newInstance();
s.importantMethod();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void simpleMethod() {
// TODO Auto-generated method stub
System.out.println("간단한 일");
}
}