[语法] 代理人设计模式

楼主: 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