디자인 모드 13 - 에이전트 모드

5647 단어 디자인 모드
1. 개념
     대리 모드 는 위탁 모드 라 고도 부른다.이 대상 에 대한 접근 을 제어 하기 위해 다른 대상 에 게 에이 전 트 를 제공 합 니 다.
 
2. 사례
 

package org.demo.proxy.demo01;



public class Demo03 {

    public static void main(String[] args) {

        IUser user = new UserProxy(new UserImpl()) ;

        user.action() ;

    }



}







interface IUser{

    void action() ;

}





class UserImpl implements IUser{

    @Override

    public void action() {

        System.out.println("      ");

    }

} 





class UserProxy implements IUser{

    private IUser user ; 

    public UserProxy(IUser user) {

        this.user = user ;

    }

    @Override

    public void action() {

        System.out.println("       ");

        user.action() ;

    }

}

 
결과:
       

      

 
 
JDK 동적 에이전트
      
/**********************************************************************

 * <pre>

 * FILE : Demo02.java

 * CLASS : Demo02

 *

 * AUTHOR : Liaokailin

 *

 * FUNCTION : TODO

 *

 *

 *======================================================================

 * CHANGE HISTORY LOG

 *----------------------------------------------------------------------

 * MOD. NO.|   DATE   |   NAME  | REASON  | CHANGE REQ.

 *----------------------------------------------------------------------

 *             |2014-3-7|Liaokailin| Created |

 * DESCRIPTION:

 * </pre>

 ***********************************************************************/

package org.demo.proxy.demo01;



import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;



public class Demo02 {



    /**

     * Function : 

     * @author : Liaokailin

     * CreateDate : 2014-3-7

     * version : 1.0

     * @param args

     */

    public static void main(String[] args) {

        

            Foo prox = (Foo)Proxy.newProxyInstance(Demo01.class.getClassLoader(), new Class[]{Foo.class}, new InvocationHandler(){



            @Override

            public Object invoke(Object proxy, Method method, Object[] args)

                    throws Throwable {

                  System.out.println(args[0]) ;

                System.out.println(  method.getName()) ;

                return null;

            }}) ;

         prox.f("Helll World")     ;  

    }



}





interface Foo{

    void f(String s) ;

    void g(int i) ;

}

 
결과: 
 
Helll World

f

 
 
   
 

좋은 웹페이지 즐겨찾기