PHP - 設計模式之 代理模式

代理模式

1、在客戶端和實體之間,建立一個代理對象(proxy),客戶端對實體進行的操作,全部委派給代理對象,隱藏實體的具體實現細節。

2、Proxy還可以與業務代碼分離,部署到另外的服務器。業務代碼中通過RPC來委派任務。

註記

在傳統的編程中,業務代碼是需要知道數據是存儲到哪個數據庫的哪個表中,使用代理模式後,就不想要關心具體實體的存儲位置,可以存儲在數據庫,也可以存儲在其他位置。業務代碼將所有的操作委派給proxy,進行相關操作,而不是在業務代碼中,直接進行操作。

場景

典型的應用場景就是,MySQL數據庫的處理,查詢從“從庫”獲取數據,更改從“主庫”進行修改,實現讀寫分離!

代碼

1、傳統方式,我們查詢、更改的操作,應該是這樣

 

2、那使用代理模式,會是怎樣實現呢,我們來看一下

首先,我們得創建一個proxy類,作爲實現的實體,但是,在這之前,我們得創建一個IUserProxy接口,來對proxy類進行約束,這裏約束行爲,就是待實現的方法,這個地方,在實踐中,就寫需要進行的相關業務處理即可。

這裏,約束行爲爲,通過id獲取用戶名稱和通過id更改用戶名稱,兩個方法(實際操作,根據需求添加,即可)。

創建Proxy類,實現接口IUserProxy

Proxy類在實現IUserProxy類時,需要實現getUserName和SetUserName兩個方法,分別從主從數據庫,實現相關的業務操作!

最後,調用實體proxy類,實現剛纔的傳統模式的業務操作

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章