代理模式與裝飾者模式看起來很像,都實(shí)現(xiàn)基礎(chǔ)對(duì)象實(shí)現(xiàn)的接口,在其自身對(duì)象中都保存著對(duì)被代理/被裝飾者的對(duì)象引用。
先來看看裝飾者模式的定義:動(dòng)態(tài)的將責(zé)任附加到被裝飾者對(duì)象上,用于擴(kuò)展對(duì)象的功能。比繼承的靈活性大。典型的如Java IO的設(shè)計(jì)即是裝飾者模式的典型應(yīng)用。代理模式模式的定義:對(duì)其他對(duì)象進(jìn)行代理,以控制對(duì)被代理對(duì)象的訪問。Spring的為業(yè)務(wù)邏輯層方法生成的代理類,主要進(jìn)行一些事務(wù)控制等。由定義可以看出裝飾的責(zé)任是擴(kuò)展功能 ,而代理主要控制訪問。具體例子可參看Java IO裝飾/Spring的動(dòng)態(tài)代理/Hibernate的代理等。