![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iY4AjYiNDZhFjM0EGO4MWYhZWNlJDN0Q2NiBzY1IGZ38CX1AzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
首先建立一個接口 UserDao
然後建立一個實作類 UserDaoImpl
當我們需要對已有的接口進行增強時,我們就可以使用Proxy,建立接口的代理對象
對于Proxy類的newProxyInstance方法的第三個參數,可以使用匿名内部類,如上。也可以通過建立實作InvocationHandler的方法傳入。
我們通過這個實作InvocationHandler接口的類建立Proxy對象
為了能增強UserDao的功能,我們需要把UserDao傳入我們的UserDaoProxy類中,這樣可以調用UserDao已經實作的方法。做法是利用有參構造函數。
然後我們實作增強的邏輯
這樣我們就可以用代理對象來增強已有方法了
執行結果: