就於對於對象方法的增強總結,對象方法增強總結

來源:互聯網
上載者:User

就於對於對象方法的增強總結,對象方法增強總結

 

最近在學習的是過濾器,在處理網頁的中文亂碼問題的時候,用到的是在doFilter中用的是一個封裝類,進行對getParamter ()方法的重寫,然後就想著進行可以增強對象方法的方式進行一個總結,好吧,廢話不多說

第一種是繼承

子類繼承父類,直接對方法進行重寫, 這種應該都懂

第二種 ,動態代理

動態代理,主要是通過Proxy 與InvocationHandler 兩個介面進行處理,並同時利用了反射

在建立代理對象的時候,可以有兩種方式,一種是通過Proxy的靜態方法 getProxyClass(參數1,參數2)是產生一個代理類,但是其實在後期執行個體化對象的時候,還是需要一個InvocationHandler的執行個體對象,因為他是一個調用處理常式的介面,裡面的invoke的方法,裡面可以實現方法的增強

在者可以直接建立一個代理執行個體對象,用Proxy的靜態方法getProxyInstance(參數1,參數2,參數3);

參數一,是要被代理的類載入器,

參數二, 要實現的所有的介面的數組Class[]  

參數三 ,就是一個InvocationHandler的執行個體化對象  該對象也有三個參數,依次是:代理對象,方法,參數數組Object[]

 

擴充:面向切面編程AOP中的AOP代理,後期在介紹

第三種  裝飾者模式

1.就是增強類與被增強類要實現同一個介面

2.被增強類作為參數放在增強類中作為參數,然後在增強類中定義一個成員變數,把參數即被增強類的執行個體化對象通過構造方法傳給增強類,此時,該類就具備了被增強類的所有的方法及屬性,

3, 然後在類中,可以選擇是否對被增強類的方法進行重寫

 

總結:

為什麼

使用對方法的增強,可以降低代碼之間的耦合性,在後期的代碼處理的時候,可以不用動之前定義好的代碼,可以更好的對資料的維護,

繼承與裝飾者模式的區別,

繼承  是直接成為他的子類,繼承體系可能會造成臃腫,擴充性不好,類與類之間的耦合性增高,繼承只能單繼承,

裝飾者模式 是直接把該類的執行個體化對象作為參數傳入 ,在後期的維護中,因為耦合性的不高,可以不修改原始碼。直接進行修改和增強,會非常方便,可以傳入多個實作類別對象

 

最後: 哈哈哈哈,哪裡有錯的記得提醒下小仙,修仙路漫漫,來日方長,我要去跑步了。。。     

後續.........

 

---恢複內容結束---

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.