我們為大家介紹了php工廠模式的好處,工廠模式的意義,以及工廠模式的三種情況,那麼我們今天繼續給大家介紹php工廠模式的作用是什麼!
工廠模式分為三種:簡單工廠、工廠方法、抽象工廠,三種工廠的區別是,抽象工廠由多條產品線,而工廠方法只有一條產品線,是抽象工廠的簡化。而工廠方法和簡單工廠相對,大家初看起來好像工廠方法增加了許多代碼但是實現的功能和簡單工廠一樣。但本質是,簡單工廠並未嚴格遵循設計模式的開閉原則,當需要增加新產品時也需要修改工廠程式碼。但是工廠方法則嚴格遵守開閉原則,模式只負責抽象工廠接口,具體工廠交給客戶去擴展。在分工時,核心工程師負責抽象工廠和抽象產品的定義,業務工程師負責具體工廠和具體產品的實現。只要抽象層設計的好,框架就是非常穩定的。
簡單工廠
優點:產品使用者不需要關心產品類別的創建過程,與特定產品的實作類別達到解耦的效果;
缺點:違背"開放--封閉"原則(OCP),因為新增一個產品類別的時候,需要修改原先的工廠方法;
#適用場合:當工廠類別負責創建的物件比較少的時候;
實作方法:定義一個簡單共產類,並定義一個靜態生產方法,根據傳進來的type參數產生對應的具體父親類
具體程式碼如下
<?php//抽象产品interface Person { public function getName(); }//具体产品实现class Teacher implements Person { public function getName() { return "老师n"; }}class Student implements Person { public function getName() { return "学生n"; }}//简单工厂class SimpleFactory { public static function getPerson($type) { $person = null; if ($type == 'teacher') { $person = new Teacher(); } elseif ($type == 'student') { $person = new Student(); } return $person; }}//简单工厂调用class SimpleClient { function main() { // 如果不用工厂模式,则需要提前指定具体类 // $person = new Teacher(); // echo $person->getName(); // $person = new Student(); // echo $person->getName(); // 用工厂模式,则不需要知道对象由什么类产生,交给工厂去决定 $person = SimpleFactory::getPerson('teacher'); echo $person->getName(); $person = SimpleFactory::getPerson('student'); echo $person->getName(); }}
總結:
透過本文的學習相信大家對php工廠模式的角色有了新的概念,希望對你的工作有幫助! ~
相關推薦:
以上是php設計模式工廠模式有什麼作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!