Java學習之靜態代理和動態代理
阿新 • • 發佈:2021-07-11
0x00 靜態代理
優點:可以在不改變目標物件的前提下擴充套件目標物件的功能
缺點:介面增加新的功能後,目標物件和代理物件都需要進行修改
介面類(IUserDao.java)
package com.proxy;
public interface IUserDao {
public void save();
}
目標物件(UserDao.java)
package com.proxy; public class UserDao implements IUserDao{ @Override public void save(){ System.out.println("儲存資料"); } }
代理物件(UserDaoProxy.java)
必須實現介面
package com.proxy; public class UserDaoProxy implements IUserDao{ private IUserDao target; public UserDaoProxy(IUserDao target){ this.target = target; } @Override public void save() { System.out.println("開啟事務"); target.save(); System.out.println("提交事務"); } }
測試類(TestProxy.java)
package com.proxy;
import org.junit.Test;
public class TestProxy {
@Test
public void testStaticProxy(){
IUserDao target = new UserDao();
UserDaoProxy proxy = new UserDaoProxy(target);
proxy.save();
}
}