[語法] 代理人設計模式

作者: TKB5566 (我們的元首阿道夫希特勒)   2023-12-11 21:01:24
最近在研讀Spring AOP,而AOP使用了代理人設計模式,要理解何謂AOP就必須先理解
何謂代理人設計模式,因此我嘗試整理了該設計模式的大綱:
代理人模式從表面上的語法來看,類似在Java IO看到的裝飾者模式,
兩者都是透過包裝某個既有的類別,去增加既有類別的功能。
但是代理人設計模式包裝某類別的目的,是出於增加與業務邏輯無關,額外的功能。
而裝飾者模式的目的是,增加與業務邏輯有關的功能。例如Java IO就是透過裝飾者模式
不斷對物件加強其存取檔案的功能。
代理人模式要如何做到這個目的呢?
就是新增/宣告一種代理類別,將某個包含業務邏輯的物件封裝起來,
這樣該代理類別內,就有一區塊是用於封裝業務邏輯物件;然後於封裝以外的範圍,
去給代理類別增加功能。這樣這個代理類別包含了業務邏輯、又有了額外的功能。
所以就實作了代理人模式。
若某物件的業務邏輯已經定型,不須做額外改變,因此不該隨便去動到該物件時,
透過代理類別去封裝該物件,可避免外部其他物件直接存取到該業務邏輯物件,
外部物件只能存取代理類別new出來的代理物件。這樣可以確保程式的安全性。
作者: xrururururu (胖達)   2023-12-12 23:23:00
作者: NullLife (廢材大叔有點累)   2023-12-13 09:27:00
Spring有提供兩種代理模式 一是你提到的jdk動態代理二是透過CGlib

Links booklink

Contact Us: admin [ a t ] ucptt.com