1,什麼是代理模式?javascript
代理模式的做用是:爲其餘對象提供一種代理以控制對這個對象的訪問。java
2,代理模式有什麼好處?web
在某些狀況下,一個客戶不想或者不能直接引用另外一個對象,而代理對象能夠在客戶端和目標對象之間起到中介的做用。app
3,代理模式通常涉及到的角色有:ide
抽象角色:聲明真實對象和代理對象的共同接口;
代理角色:代理對象角色內部含有對真實對象的引用,從而能夠操做真實對象,同時代理對象提供與真實對象相同的接口以便在任什麼時候刻都能代替真實對象。同時,代理對象能夠在執行真實對象操做時,附加其餘的操做,至關於對真實對象進行封裝。
真實角色:代理角色所表明的真實對象,是咱們最終要引用的對象。this
4,應用場景舉例:spa
好比西門慶找潘金蓮,那潘金蓮很差意思答覆呀,咋辦,找那個王婆作代理,表如今程序上時是這樣的體現的代理
先說說這個場景中的要素:一種類型的女人,潘金蓮,王婆,西門慶,後來擴展的賈氏也和西門慶勾上了,咱們是假設的,而後西門慶找潘金蓮happy,但潘金蓮很差意思直接,就找個王婆代理唄。咱們看看具體代碼。code
先定義一種女人orm
一種類型嘛,那確定是接口,定義個潘金蓮
再定義個醜陋的王婆
兩個女主角都上場了,該男主角了,定義個西門慶
那這就是活生生的一個例子,經過代理人實現了某種目的,若是真去了王婆這個中間環節,直接西門慶和潘金蓮勾搭,估計很難成就武松殺嫂事件。
那咱們再考慮一下,水滸裏面還有沒有這類型的女人?有,盧俊義的老婆賈氏(就是和那個管家苟合的那個),這個名字起的:「賈氏」,那咱們也讓王婆作她的代理:
西門慶勾潘金蓮又勾引賈氏
說完這個故事,那我總結一下,代理模式主要使用了java的多態,幹活的是被代理類,代理類主要是接活,你讓我幹活,好,我交給幕後的類去幹,你滿意就成,那怎麼知道被代理類能不能幹呢?同根就成,你們知根知底,你能作啥,我能作啥都清楚得很,一樣一個接口唄。好了很少說了,慢慢體會吧。