科技知識動態:詳解PHP之簡單工廠模式

導讀跟大家講解下有關詳解PHP之簡單工廠模式,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說詳解PHP之簡單工廠模式,小編也收集

跟大家講解下有關詳解PHP之簡單工廠模式,相信小伙伴們對這個話題應該也很關注吧,現在就為小伙伴們說說詳解PHP之簡單工廠模式,小編也收集到了有關詳解PHP之簡單工廠模式的相關資料,希望大家看到了會喜歡。

本文主要為大家分享一篇詳解PHP之簡單工廠模式 ,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧。

1.簡單工廠的定義

提供一個創建對象實例的功能,而無需關系其具體實現,被創建實例的類型可以是接口、抽象類,也可以是具體的類。

2.簡單工廠的結構和說明

簡單工廠的結構如下圖:

Api: 定義客戶所需要的功能接口

Impl: 具體實現Api的實現類,可能會有多個

Factory: 工廠,選擇合適的實現類來創建Api接口對象

Client: 客戶端,通過Factory 來獲取Api接口對象,然后面向Api接口編程

Api接口:

/** * 接口的定義,該接口可以通過簡單工廠來創建 * * @author Administrator * */public interface Api {/** * 具體功能方法的定義 * * @param s * 需要的參數 */public void operation(String s);}

ImplA:

/** * 接口的具體實現對象A * * @author Administrator * */public class ImplA implements Api {@Overridepublic void operation(String s) {// 實現的功能System.out.println("ImplA s==" + s);}}

ImplB:

/** * 接口的具體實現對象B * * @author Administrator * */public class ImplB implements Api {@Overridepublic void operation(String s) {// 實現的功能System.out.println("ImplB s==" + s);}}

Factory:

/** * 工廠類,用來創建Api對象 * * @author Administrator * */public class Factory {/** * 具體創建Api對象的方法 * * @param condition * 從外部傳入的選擇條件 * @return */public static Api createApi(int condition) {// 應該根據某些條件去選擇究竟創建哪一個具體的實現對象// 這些條件可以從外部傳入,也可以從其他途徑獲取// 如果只有一個實現,可以省略條件Api api = null;if (condition == 1) {api = new ImplA();} else if (condition == 2) {api = new ImplB();}return api;}}

測試類Client:

public class Client {public static void main(String[] args) {// 通過簡單工廠來獲取接口對象Api api = Factory.createApi(1);api.operation("正在使用簡單工廠模式");}}

簡單工廠的調用順序示意圖:

簡單工廠的命名建議:

類命名建議為“模塊名稱+Factory”,比如,用戶模塊的工廠就稱為UserFactory

方法名稱通常為“get+接口名稱”或者是“create+接口名稱”。比如用戶接口名稱為UserEbi,那么方法名稱通常為getUserEbi或者createUserEbi。

簡單工廠方法的內部主要實現的功能是“選擇合適的實現類”,選擇條件或者是參數的來源通常為一下集中:

來源于客戶端,由Client來傳入參數

來源于配置文件,從配置文件獲取用于判斷的值

來源于程序運行期的某個值,比如從緩存中獲取某個運行期的值

簡單工廠的優點:

幫助封裝

簡單工廠雖然簡單,但是非常友好地幫助我們實現了組件的封裝,然后讓組件外部能真正面向接口編程。

2. 解耦

通過簡單工廠,實現了客戶端和具體實現類的解耦。

簡單工廠的缺點:

1. 可能增加客戶端的復雜度

2.不方便擴展子工廠

簡單工廠的本質:選擇實現

何時選擇簡單工廠:

如果想完全封裝隔離具體實現,讓外部只能通過接口來操作封裝體,那么可以選擇簡單工廠,讓客戶端通過工廠來獲取相應的接口,而無須關心具體的實現。

如果想要把對外創建對象的職責集中管理和控制,可以選擇簡單工廠。

以上就是詳解PHP之簡單工廠模式的詳細內容,更多請關注php中文網其它相關文章!

來源:php中文網

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!