PHP簡單工廠模式的工廠類通常是使用靜態方法,經過接收的參數的不一樣來返回不一樣的對象實例。php
也就是使用的時候經過傳參來肯定生成不一樣的對象。laravel
簡單工廠:面試
★官方PHP高級學習交流社羣「點擊」管理整理了一些資料,BAT等一線大廠進階知識體系備好(相關學習資料以及筆面試題)以及不限於:分佈式架構、高可擴展、高性能、高併發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階乾貨sql
簡單工廠須要有3個角色:shell
產品接口類:用於定義產品規範;設計模式
具體的產品實現,例如ConcreateProductA,ConcreateProductB;服務器
簡單工廠類SimpleFactory:用於生成具體的產品。架構
使用的時候經過傳參數給簡單工廠類,能夠生成想要的產品。併發
代碼:ICar.php:定義產品規範:分佈式
命名空間 Yjc \ SimpleFactory ; 接口 ICar { 公共 功能 驅動程序(); }
具體產品實現:
namespace Yjc\SimpleFactory; class Benz implements ICar { public function driver() { echo 'benz driver.'; } } class Bmw implements ICar { public function driver() { echo 'bmw driver.'; } }
簡單工廠類SimpleFactory:
命名空間 Yjc \ SimpleFactory ; 類 SimpleFactory { 公共 靜態 功能 makeCar($型){ 開關($型){ 案 '奔馳': 返回 新 奔馳(); 休息 ; 狀況下, 'BMW' : 返回 新 寶馬(); 休息 ; 默認值: 拋出 new \ Exception('不支持類型!'); 打破; } } }
參數代碼:
$車 = SimpleFactory :: makeCar( '奔馳'); $ car- > driver();
簡單工廠的優勢/缺點:
優勢:簡單工廠模式可以根據外部給定的信息,決定確切應該建立一個具體類的對象。明確區分了各自的職責和權力,有利於整個軟件體系結構的優化。
缺點:很明顯工廠類別集中了全部實例的建立邏輯,徹底違反了GRSPR的高內聚的責任分配原則。
PHP 互聯網架構師 50K 成長指南+行業問題解決總綱(持續更新)
面試10家公司,收穫9個offer,2020年PHP 面試問題
★若是喜歡個人文章,想與更多資深開發者一塊兒交流學習的話,獲取更多大廠面試相關技術諮詢和指導,歡迎加入咱們的羣-點擊此處。