亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

淺析php工廠模式

2024-05-04 23:28:02
字體:
來源:轉載
供稿:網友
本文通過實例向大家展示了php設計模式中的工廠模式,工廠模式分為三種:簡單工廠、工廠方法、抽象工廠。想學習的小伙伴們千萬不要錯過。
 
 

本系列文章來總結一下設計模式在PHP中的應用,這是第二篇創建型模式之工廠模式。

設計模式的一般介紹在第一篇文章講了,這里就不重復。

工廠模式

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

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

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

 

復制代碼代碼如下:

/**
 * 工廠模式
 */
//抽象產品
interface Person {
    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設計模式中的工廠模式了吧,是不是挺簡單呢,接下來的文章我們將介紹下創建者模式


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美高清视频一区二区| 欧美精品免费看| 在线成人激情黄色| 日韩免费在线电影| 国产高清视频一区三区| 欧美大全免费观看电视剧大泉洋| 国产精品中文字幕在线观看| 中文精品99久久国产香蕉| 久久影视电视剧免费网站清宫辞电视| 国产精品jvid在线观看蜜臀| 亚洲国产欧美一区二区三区同亚洲| 国产精品美女av| 亚洲精品在线不卡| 57pao成人国产永久免费| 国产专区欧美专区| 精品国产一区二区在线| 国产精品久久久久久久久久小说| 91久久在线观看| 欧美在线视频观看免费网站| 一个色综合导航| 欧美国产日韩中文字幕在线| 日韩精品视频免费| 亚洲摸下面视频| 欧美在线视频观看| 欧美成人精品一区二区三区| 日韩av黄色在线观看| 久久99热精品| 国产玖玖精品视频| 欧美一级bbbbb性bbbb喷潮片| 免费91麻豆精品国产自产在线观看| 亚洲欧美中文另类| 亚洲欧洲偷拍精品| 欧美中文字幕精品| 日韩av电影院| 国产日韩欧美日韩大片| 中国日韩欧美久久久久久久久| 国产日韩专区在线| 91免费高清视频| 91久久精品美女高潮| 国产成人精品a视频一区www| 国产精品网站大全| 日韩av一区在线| 国模叶桐国产精品一区| 亚洲国产精品va在看黑人| 久久精品中文字幕一区| 欧美激情一区二区三区久久久| 亚洲午夜精品久久久久久久久久久久| 亚洲另类激情图| 久久在线免费观看视频| 2020欧美日韩在线视频| 成人写真视频福利网| 中文字幕欧美日韩va免费视频| 欧美亚洲国产视频小说| 91精品视频网站| 神马久久久久久| 国产成人亚洲精品| 都市激情亚洲色图| 日韩国产精品一区| 亚洲第一视频网站| 日韩欧美国产视频| 欧美午夜影院在线视频| 欧美疯狂做受xxxx高潮| 7777精品久久久久久| 国产精品video| 久久久久日韩精品久久久男男| 51精品在线观看| 7777免费精品视频| 亚洲第一区中文99精品| 欧美性在线视频| 欧美性猛交99久久久久99按摩| 亚洲区在线播放| 日韩电影中文字幕一区| 日韩免费观看高清| 国产欧美精品一区二区| 亚洲理论片在线观看| 精品动漫一区二区三区| 国产日韩欧美日韩| 中文字幕不卡av| 在线观看欧美日韩| 久久久久亚洲精品| 亚洲欧美www| 国产成人高清激情视频在线观看| 国产精品久久久一区| 亚洲四色影视在线观看| 欧美日韩国产精品专区| 日韩欧美第一页| 国产在线精品一区免费香蕉| 亚洲成人av片在线观看| 最近2019好看的中文字幕免费| 国产精品嫩草影院一区二区| 日本韩国欧美精品大片卡二| 精品五月天久久| 日韩精品免费在线视频| 中文字幕日韩欧美精品在线观看| 国产激情999| 国产美女精品免费电影| 久久精品国产亚洲一区二区| 亚洲女人天堂网| 岛国av一区二区三区| 久精品免费视频| 日韩欧美国产视频| 国产三级精品网站| 亚洲免费高清视频| 欧美俄罗斯性视频| 97免费中文视频在线观看| 欧美亚洲第一页| 国内免费久久久久久久久久久| 国产精品亚洲精品| 欧美影院久久久| 欧美在线视频导航| 日本不卡视频在线播放| 日本久久久久久| 欧美巨乳在线观看| 在线观看不卡av| 日本久久久久久| 国产成人涩涩涩视频在线观看| 国产日韩精品在线播放| 久久免费视频网站| 成人国内精品久久久久一区| 亚洲天堂成人在线视频| 55夜色66夜色国产精品视频| 国产精品久久久久91| 国产精品一区久久| 成人在线精品视频| 欧美性69xxxx肥| 国产精品麻豆va在线播放| 欧美激情在线一区| 国产一区二中文字幕在线看| 久久国产精品久久精品| 日本国产高清不卡| 欧美日韩亚洲精品一区二区三区| 午夜免费久久久久| 欧美丝袜一区二区三区| 日韩高清不卡av| 黄色一区二区三区| 91丨九色丨国产在线| 欧美性猛交xxxx久久久| 欧美特级www| 中文字幕视频一区二区在线有码| 91精品久久久久久久久久久| 亚洲无亚洲人成网站77777| 亚洲人成电影在线观看天堂色| 国产亚洲在线播放| 亚洲女人初尝黑人巨大| 国产精品美乳在线观看| 国产精品xxx视频| 欧美日本啪啪无遮挡网站| 欧美日韩一区免费| 国产欧美日韩中文字幕在线| 国产精品久久久久久久久免费| 日韩中文字幕亚洲| 韩国一区二区电影| 狠狠躁夜夜躁久久躁别揉| 久久福利视频网| 国产成人精品久久二区二区91| 亚洲欧美视频在线| 国产精品久久久久久亚洲影视| 久久久99免费视频| 色爱av美腿丝袜综合粉嫩av| 97成人精品视频在线观看| 日韩亚洲欧美中文高清在线| 97在线看免费观看视频在线观看| 久久成人精品视频| 亚洲香蕉在线观看|