本文主要為大家分享一篇詳解PHP之簡單工廠模式 ,具有很好的參考價值,希望對大家有幫助。一起跟著小編過來看看吧。
1.簡單工廠的定義
# 提供一個建立物件實例的功能,而無需關係其具體實現,被創建實例的類型可以是介面、抽象類,也可以是具體的類別。
2.簡單工廠的結構與說明
#簡單工廠的結構如下圖:
Api介面:
/** * 接口的定义,该接口可以通过简单工厂来创建 * * @author Administrator * */ public interface Api { /** * 具体功能方法的定义 * * @param s * 需要的参数 */ public void operation(String s); }ImplA:
/** * 接口的具体实现对象A * * @author Administrator * */ public class ImplA implements Api { @Override public void operation(String s) { // 实现的功能 System.out.println("ImplA s==" + s); } }
ImplB:
/** * 接口的具体实现对象B * * @author Administrator * */ public class ImplB implements Api { @Override public 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("正在使用简单工厂模式"); } }
簡單工廠的呼叫順序示意圖:
簡單工廠的命名建議:
選擇合適的實作類別”,選擇條件或參數的來源通常為一下集中:
簡單工廠的優點:
簡單工廠的缺點:
1.可能增加客戶端的複雜度2.不方便擴充子工廠簡單工廠的本質:選擇實作
#何時選擇簡單工廠:
PHP影片教學》
以上是詳解PHP之簡單工廠模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!