JAVA이야기

프록시 패턴

НooпeУ 2012. 12. 18. 10:08

프록시 패턴

- 예를들어, 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("간단한 일");

}


}