1. 程式人生 > 其它 >設計模式--代理模式

設計模式--代理模式

類圖

原始碼

(1)    Customer.java

package proxytest;


public class Customer implements Person{
    public void findLove(){
        System.out.println("高富帥");
        System.out.println("身高180cm");
        System.out.println("有6塊腹肌");
        System.out.println("未滿18歲");
    }
}
(2)    JDKMeipo.java
package
proxytest; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class JDKMeipo implements InvocationHandler{ // 被代理的物件,把引用儲存下來 private Object target; public Object getInstance(Object target) throws Exception{ this
.target = target; Class<?> clazz = target.getClass(); return Proxy.newProxyInstance(clazz.getClassLoader(),clazz.getInterfaces(),this); } public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable{ before(); Object obj = method.invoke(this
.target,args); after(); return obj; } private void before(){ System.out.println("我是媒婆:我給你找物件,現在已經確認你的需求"); System.out.println("開始物色"); } private void after(){ System.out.println("未滿18歲,對不起不能早戀!!"); } } (3) Person.java package proxytest; public interface Person { public void findLove(); } (4) Test.java package proxytest; public class Test { public static void main(String[] args){ try { Person obj = (Person)new JDKMeipo().getInstance(new Customer()); obj.findLove(); } catch (Exception e) { e.printStackTrace(); } } }

測試截圖