標籤:blog java 使用 代碼 io new
1.1. java動態代理
java.lang.reflect包下的Proxy(建立代理對象)和InvocationHandler(調用轉寄)兩個類
代理對象代表目標對象(target)執行相應的活動
靜態代理:代理對象實現目標對象一致的介面,實現代理介面和調用轉寄 (不推薦使用)
在調用前後的附加邏輯,體現了代理對象的價值
程式碼範例:
1、java動態代理介面package proxy;public interface BookDAO {//增加圖書的實現public void addBook();}2、建立實作類別(目標類)package proxy;public class BookDAOImpl implements BookDAO {@Overridepublic void addBook() {// TODO Auto-generated method stubSystem.out.println("增加圖書的實現方法....");}}3、建立代理類package proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;//JDK動態代理類實現public class BookDAOProxy implements InvocationHandler{//實際代理對象private Object target;//綁定委派物件並返回一個代理類public Object bind(Object target){this.target = target;//取得代理對象 //要綁定介面(這是一個缺陷,cglib彌補了這一缺陷) return Proxy.newProxyInstance(this.getClass().getClassLoader(), this.target.getClass().getInterfaces(), this);}@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {// TODO Auto-generated method stubObject result = null;System.out.println("事務開始處理...");//執行方法result = method.invoke(target, args);System.out.println("事務結束處理...");return result;}}4、測試類別:package proxy;public class BookTest {public static void main(String[] args) {//獲得一個動態代理類BookDAO proxy = (BookDAO) new BookDAOProxy().bind(new BookDAOImpl());//調用代理類的方法proxy.addBook();}}
1.1. java NIO(自行研究)
涉及網路編程