国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

三種php工廠模式的簡單介紹

2020-03-22 18:47:35
字體:
來源:轉載
供稿:網友
在之前的文章中,我們為大家介紹了什么是PHP工廠模式,以及為什么要使用php工廠模式,今天我們詳細介紹下php工廠模式的三種情況,通過實例具體分析!

工廠模式

實現:定義一個用于創建對象的接口,讓子類決定實例化哪一個類。
應用場景:眾多子類并且會擴充、創建方法比較復雜。

工廠模式分為三種:簡單工廠、工廠方法、抽象工廠 ,

三種工廠的區別是,抽象工廠由多條產品線,而工廠方法只有一條產品線,是抽象工廠的簡化。而工廠方法和簡單工廠相對,大家初看起來好像工廠方法增加了許多代碼但是實現的功能和簡單工廠一樣。但本質是,簡單工廠并未嚴格遵循設計模式的開閉原則,當需要增加新產品時也需要修改工廠代碼。但是工廠方法則嚴格遵守開閉原則,模式只負責抽象工廠接口,具體工廠交給客戶去擴展。在分工時,核心工程師負責抽象工廠和抽象產品的定義,業務工程師負責具體工廠和具體產品的實現。只要抽象層設計的好,框架就是非常穩定的。

代碼如下:

/** * 工廠模式 *///抽象產品interface Person {    html' target='_blank'>public function getName(); }//具體產品實現class Teacher implements Person {    function getName() {        return "老師n";    }}class Student implements Person {    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();       }}//工廠方法interface CommFactory {    public function getPerson();}//具體工廠實現class StudentFactory implements CommFactory {    function getPerson(){        return new Student();    }}class TeacherFactory implements CommFactory {    function getPerson() {        return new Teacher();    }}//工廠方法調用class CommClient {    static function main() {           $factory = new TeacherFactory();           echo $factory->getPerson()->getName();           $factory = new StudentFactory();           echo $factory->getPerson()->getName();    }}//抽象工廠模式另一條產品線interface Grade {       function getYear();}//另一條產品線的具體產品class Grade1 implements Grade {       public function getYear() {              return '2003級';       }}class Grade2 implements Grade {       public function getYear() {              return '2004級';       }}//抽象工廠interface AbstractFactory {       function getPerson();       function getGrade();}//具體工廠可以產生每個產品線的產品class Grade1TeacherFactory implements AbstractFactory {       public function getPerson() {              return new Teacher();       }       public function getGrade() {              return new Grade1();       }}class Grade1StudentFactory implements AbstractFactory {       public function getPerson() {              return new Student();       }       public function getGrade() {              return new Grade1();       }}class Grade2TeacherFactory implements AbstractFactory {       public function getPerson() {              return new Teacher();       }       public function getGrade() {              return new Grade2();       }}//抽象工廠調用class FactoryClient {       function printInfo($factory) {              echo $factory->getGrade()->getYear().$factory->getPerson()->getName();       }       function main() {              $client = new FactoryClient();              $factory = new Grade1TeacherFactory();              $client->printInfo($factory);              $factory = new Grade1StudentFactory();              $client->printInfo($factory);              $factory = new Grade2TeacherFactory();              $client->printInfo($factory);       }}//簡單工廠//SimpleClient::main();//工廠方法//CommClient::main();//抽象工廠FactoryClient::main();

總結:

通過本文的示例詳解小伙伴們了解了php工廠模式了吧,是不是挺簡單呢,希望對你的工作有所幫助!

相關推薦:

什么是php工廠模式?為何要用php工廠模式?

PHP工廠模式的三種形式的示例代碼詳解

php工廠模式的使用實例總結

以上就是三種php工廠模式的簡單介紹的詳細內容,更多請關注 其它相關文章!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东兰县| 肇州县| 桦川县| 通化市| 仪征市| 剑阁县| 游戏| 芜湖县| 邵阳县| 西吉县| 大名县| 朔州市| 西安市| 邵阳市| 海南省| 白山市| 安顺市| 政和县| 甘孜县| 太仓市| 旬邑县| 平潭县| 孟村| 鄂尔多斯市| 巫山县| 凤翔县| 桂阳县| 壶关县| 襄汾县| 师宗县| 峨眉山市| 广元市| 连江县| 清原| 成武县| 富平县| 娄烦县| 政和县| 延吉市| 松江区| 桃源县|