代理模式
1、在客戶端和實體之間,建立一個代理對象(proxy),客戶端對實體進行的操作,全部委派給代理對象,隱藏實體的具體實現細節。
2、Proxy還可以與業務代碼分離,部署到另外的服務器。業務代碼中通過RPC來委派任務。
註記:
在傳統的編程中,業務代碼是需要知道數據是存儲到哪個數據庫的哪個表中,使用代理模式後,就不想要關心具體實體的存儲位置,可以存儲在數據庫,也可以存儲在其他位置。業務代碼將所有的操作委派給proxy,進行相關操作,而不是在業務代碼中,直接進行操作。
場景:
典型的應用場景就是,MySQL數據庫的處理,查詢從“從庫”獲取數據,更改從“主庫”進行修改,實現讀寫分離!
代碼:
1、傳統方式,我們查詢、更改的操作,應該是這樣
2、那使用代理模式,會是怎樣實現呢,我們來看一下
首先,我們得創建一個proxy類,作爲實現的實體,但是,在這之前,我們得創建一個IUserProxy接口,來對proxy類進行約束,這裏約束行爲,就是待實現的方法,這個地方,在實踐中,就寫需要進行的相關業務處理即可。
這裏,約束行爲爲,通過id獲取用戶名稱和通過id更改用戶名稱,兩個方法(實際操作,根據需求添加,即可)。
創建Proxy類,實現接口IUserProxy
Proxy類在實現IUserProxy類時,需要實現getUserName和SetUserName兩個方法,分別從主從數據庫,實現相關的業務操作!
最後,調用實體proxy類,實現剛纔的傳統模式的業務操作