1. 程式人生 > >原始碼專題之spring設計模式:jdk動態代理

原始碼專題之spring設計模式:jdk動態代理

jdk動態代理

程式碼實現  滿足代理模式應用場景的三個必要條件

  • 兩個角色:執行者、被代理物件
  • 注重過程,必須要做,被代理物件沒時間做或者不想做(怕羞羞),不專業
  • 執行者必須拿到被代理物件的個人資料(執行者持有被代理物件的引用)

jdk的動態代理通過呼叫Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces,InvocationHandler h) 方法,生成目標物件的代理類,interfaces引數為目標物件所實現的全部介面,InvocationHandler的實現類負責在呼叫方法前後處理自定義邏輯,下面我們以媒婆介紹物件為背景實現:  1 首先是需要找物件的人

public interface Person {
    void findLove();    
    String getSex();
    String getName();
}
---
public class XiaoFang implements Person{
    private String sex = "女";
    private String name = "小芳";
    
    @Override
    public void findLove() {
        System.out.println("我叫" + this.name + ",性別:" + this.sex + "我找物件的要求是:");
        System.out.println("高富帥");
        System.out.println("有房有車的");
        System.out.println("身高要求180cm以上,體重70kg");
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

2 小芳不好意思找物件,就要找媒婆來搭橋

原文連結