原始碼專題之spring設計模式:jdk動態代理
阿新 • • 發佈:2018-12-18
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 小芳不好意思找物件,就要找媒婆來搭橋