책임 모드의 Proxy 모드
6219 단어 프록시 모드
//
public interface Person {
void doSomethings();
}
//
public class Woman implements Person{
@Override
public void doSomethings() {
// TODO Auto-generated method stub
System.out.println(" woman do somethings");
}
}
//
public class Man implements Person{
private Person person;
public Man(Person person) {
// TODO Auto-generated constructor stub
this.person = person;
}
@Override
public void doSomethings() {
// TODO Auto-generated method stub
System.out.println(" man do something");
person.doSomethings();
}
}
//
public class Test {
public static void main(String[] args){
Man man = new Man(new Woman());
man.doSomethings();
}
}
//
man do something
woman do somethings
4. 예(동적 에이전트)
//
public interface Animal {
void run();
}
// dog
public class Dog implements Animal{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("dog running");
}
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
// :
public class DynamicProxy implements InvocationHandler{
private Object obj;
public DynamicProxy(Object obj) {
// TODO Auto-generated constructor stub
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
Object result = null;
result = method.invoke(obj, args);
return result;
}
public static Object Factory(Object obj){
Class cls = obj.getClass();
return Proxy.newProxyInstance(cls.getClassLoader(), cls.getInterfaces(), new DynamicProxy(obj));
}
}
//
public class Test {
public static void main(String[] args){
Person woman = (Person)DynamicProxy.Factory(new Woman());
woman.doSomethings();
Animal dog = (Animal)DynamicProxy.Factory(new Dog());
dog.run();
}
}
//
woman do somethings
dog running
5. 요약:Proxy(에이전트) 모델의 의도는 대상에게 에이전트나 점유율을 제공하여 대상에 대한 접근을 제어하는 데 있다.Java에서 동적 에이전트는 때때로 재사용 가능한 기능을 추가하는 메커니즘을 제공할 수 있습니다.만약에 어떤 대상의 클래스가 캡처할 인터페이스를 실현할 수 있다면 동적 에이전트를 사용하여 이 대상을 포장하고 자신의 처리 논리를 증가하여 포장된 대상 코드의 기능을 강화하거나 교체할 수 있다.6. 참조:http://www.open-open.com/home/space-24-do-blog-id-12.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간편한 Java 프록시 모드여러분과 함께 자바 프록시 모드에 대해 얘기를 나눠보도록 하겠습니다. 1. 정적 에이전트 1.1 정적 에이전트의 에이전트 클래스와 피에이전트의 클래스는 모두 공통된 인터페이스를 유지해야 한다. 1.2 프록시 클래스,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.