設(shè)計(jì)模式:代理模式
什么是代理模式?
代理模式(英文:Proxy Pattern),為某對(duì)象提供一種代理以控制對(duì)該對(duì)象的訪(fǎng)問(wèn)。即客戶(hù)端通過(guò)代理間接地訪(fǎng)問(wèn)該對(duì)象,從而限制、增強(qiáng)或修改該對(duì)象的一些特性。
一句話(huà)歸納
找人辦事,增強(qiáng)職責(zé)。
代碼示例
現(xiàn)在有一個(gè)抽象類(lèi)定義了要做什么,有一個(gè)真正的實(shí)現(xiàn)類(lèi),我通過(guò)新創(chuàng)建一個(gè)代理類(lèi)在該類(lèi)的方法執(zhí)行時(shí)對(duì)其進(jìn)行了加工處理,而不去改變?cè)械臉I(yè)務(wù)代碼(比如:加日志、事務(wù)等等)。

適用性
以下場(chǎng)景我建議你考慮使用:
代理模式的使用場(chǎng)景非常多,Spring AOP,這是一個(gè)非常典型的動(dòng)態(tài)代理;
業(yè)務(wù)代碼和非業(yè)務(wù)代碼進(jìn)行分離(比如事務(wù)、日志);
想在訪(fǎng)問(wèn)一個(gè)類(lèi)時(shí)做一些控制的時(shí)候。
局限性
以下場(chǎng)景我建議你謹(jǐn)慎使用:
由于在調(diào)用真實(shí)類(lèi)時(shí)中間加了一層代理,性能會(huì)慢一些。
有些代理模式設(shè)計(jì)得非常的復(fù)雜,需要額外的工作。
靜態(tài)代理和動(dòng)態(tài)代理
根據(jù)代理的創(chuàng)建時(shí)期,代理模式分為靜態(tài)代理和動(dòng)態(tài)代理。
靜態(tài):由程序員創(chuàng)建代理類(lèi)或特定工具自動(dòng)生成源代碼再對(duì)其編譯,在程序運(yùn)行前代理類(lèi)的 .class 文件就已經(jīng)存在了。
動(dòng)態(tài):在程序運(yùn)行時(shí),運(yùn)用反射機(jī)制動(dòng)態(tài)創(chuàng)建而成
寫(xiě)在最后
最后,好兄弟,記得點(diǎn)贊,關(guān)注,謝謝。
