Hadoop技術內幕HDFS-筆記5之動態代理

來源:互聯網
上載者:User

標籤: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(自行研究)

涉及網路編程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.