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

首頁 > 語言 > PHP > 正文

PHP設計模式之工廠模式詳解

2024-05-05 00:00:39
字體:
來源:轉載
供稿:網友

在開發大型系統時,往往會出現這樣一種情況:

我有一部分基礎數據,是類classA是從數據庫A讀取出來的,其他很多的功能都是基于這個基礎數據來操作的?,F在呢,我想把數據從數據庫A變成從另外的數據源去獲取,這時候,要修改起來就比較麻煩,要修改其他很多類的代碼。這種設計顯然是不夠靈活的,換句話說,就是緊耦合的,那么什么是緊耦合呢?緊耦合就是指系統中某個部分的函數或類嚴重依賴于系統的其他部分中的函數或類的行為和結構。

這時,工廠模式的作用性就體現出來了。

工廠模式    

就是解決這樣的一些情況的設計方法。

工廠模式是一種類,建立了一個工廠來根據所需來創建對象,這種方式在多態性編程中是很重要的,允許動態替換類,修改配置等。

/*基本工廠模式代碼*/

<?php /**  * 基本工廠模式  * */ class User {  private $username;  public function __construct($username) {   $this->username = $username;  }    public function getUser() {   return $this->username;  } }  class userFactory {  static public function createUser() {   return new User('Jack');  } }  $user = userFactory::createUser();echo $user->getUser(); ?>

工廠模式分為:簡單工廠模式、工廠方法模式、抽象工廠模式。

簡單工廠模式,通過靜態方法創建對象??梢岳斫獬?,只負責生產同一等級結構中的任何一個產品,但是不能新增產品。

<?php/**  *簡單工廠模式  * */ interface userProperties {  function getUsername();  function getGender();  function getJob(); } class User implements userProperties{  private $username;  private $gender;  private $job;  public function __construct($username, $gender, $job) {   $this->username = $username;   $this->gender = $gender;   $this->job = $job;  }   public function getUsername() {   return $this->username;  }   public function getGender() {   return $this->gender;  }   public function getJob() {   return $this->job;  } }  class userFactory {  static public function createUser($properties = []) {   return new User($properties['username'], $properties['gender'], $properties['job']);  } }  $employers = [  ['username' => 'Jack', 'gender' => 'male', 'job' => 'coder'],  ['username' => 'Marry', 'gender' => 'female', 'job' => 'designer'],  ]; $user = userFactory::createUser($employers[0]); echo $user->getUsername();  ?>

工廠方法模式,去掉了簡單工廠模式中方法的靜態屬性,使其可以被子類集成,定義一個創建對象的接口,讓子類去決定實例化哪個類??梢岳斫獬?,用來生產同一等級結構中的固定產品,但是支持增加產品。

<?php/**  * 工廠方法模式  **/ interface userProperties {  function getUsername();  function getGender();  function getJob(); }  interface createUser {  function create($properties); }  class User implements userProperties{  private $username;  private $gender;  private $job;  public function __construct($username, $gender, $job) {   $this->username = $username;   $this->gender = $gender;   $this->job = $job;  }   public function getUsername() {   return $this->username;  }   public function getGender() {   return $this->gender;  }   public function getJob() {   return $this->job;  } }  class userFactory {  private $user;  public function __construct($properties = []) {   $this->user = new User($properties['username'], $properties['gender'], $properties['job']);  }   public function getUser() {   return $this->user;  } }  class FactoryMan implements createUser {  function create($properties) {   return new userFactory($properties);  } }  class FactoryWoman implements createUser {  function create($properties) {   return new userFactory($properties);  } }  class clientUser {  static public function getClient($properties) {   $fac = new FactoryMan;   $man = $fac->create($properties);   echo $man->getUser()->getUsername();  } }  $employers = [  ['username' => 'Jack', 'gender' => 'male', 'job' => 'coder'],  ['username' => 'Marry', 'gender' => 'female', 'job' => 'designer'],  ]; $user = clientUser::getClient($employers[0]);  ?>

抽象工廠模式,提供一個創建一系列相關或者相互依賴的對象的接口。可以理解成,用來生產不用類型的全部產品,但是不能增加新品,支持增加新的類型。

<?php/**  * 抽象工廠模式  * */  interface userProperties {  function getUsername();  function getGender();  function getJob(); }  interface createUser { //將對象的創建抽象成一個接口  function createOpen($properties);//內向創建  function createIntro($properties);//外向創建 }  class User implements userProperties{  private $username;  private $gender;  private $job;  public function __construct($username, $gender, $job) {   $this->username = $username;   $this->gender = $gender;   $this->job = $job;  }   public function getUsername() {   return $this->username;  }   public function getGender() {   return $this->gender;  }   public function getJob() {   return $this->job;  } }  class userFactory {  private $user;  public function __construct($properties = []) {   $this->user = new User($properties['username'], $properties['gender'], $properties['job']);  }   public function getUser() {   return $this->user;  } }  class FactoryMan implements createUser {  function createOpen($properties) {   return new userFactory($properties);  }   function createIntro($properties) {   return new userFactory($properties);  } }  class FactoryWoman implements createUser {  function createOpen($properties) {   return new userFactory($properties);  }   function createIntro($properties) {   return new userFactory($properties);  } }  class clientUser {  static public function getClient($properties) {   $fac = new FactoryMan;   $man = $fac->createOpen($properties);   echo $man->getUser()->getUsername();  } }  $employers = [  ['username' => 'Jack', 'gender' => 'male', 'job' => 'coder'],  ['username' => 'Marry', 'gender' => 'female', 'job' => 'designer'],  ]; $user = clientUser::getClient($employers[0]); ?>

如有錯誤,請指正。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产免费一区二区三区在线能观看| 亚洲成年人影院在线| 91国产精品视频在线| 色婷婷成人综合| 国产欧美日韩中文字幕在线| 日韩欧中文字幕| 色偷偷偷综合中文字幕;dd| 亚洲第一网站免费视频| 亚洲成人av资源网| 伊人亚洲福利一区二区三区| 亚洲专区国产精品| 中文字幕成人精品久久不卡| 情事1991在线| 精品一区二区电影| 国产综合色香蕉精品| 日韩av网站导航| 欧美成人午夜影院| 911国产网站尤物在线观看| 久久亚洲精品一区二区| 美日韩精品免费观看视频| 日韩美女在线看| 亚洲人a成www在线影院| 日韩综合视频在线观看| 久久亚洲精品一区| 日韩动漫免费观看电视剧高清| 日本韩国欧美精品大片卡二| 国产成人精品一区二区在线| 日韩av在线影院| 亚洲一区久久久| 久久久久久国产三级电影| 欧美一区三区三区高中清蜜桃| 色99之美女主播在线视频| 欧美自拍视频在线观看| 亚洲欧美综合另类中字| 色与欲影视天天看综合网| 中文字幕日韩欧美精品在线观看| 亚洲综合社区网| 亚洲天堂av在线播放| 日本高清视频精品| 亚洲自拍偷拍第一页| 久久久999精品免费| 亚洲欧美国产va在线影院| 国产精品亚洲网站| 欧美另类在线观看| 97国产成人精品视频| 国产精品精品视频| 成人免费直播live| 成人精品久久一区二区三区| 亚洲理论片在线观看| 欧洲美女7788成人免费视频| 久久成人国产精品| 亚洲国产精品yw在线观看| 欧洲精品久久久| 亚洲偷熟乱区亚洲香蕉av| 日韩av在线影视| 国产精品一区二区三区久久| 成人羞羞国产免费| 欧美成人一区在线| 欧美日韩在线观看视频| 一区二区在线视频| 国产精欧美一区二区三区| 九色精品美女在线| 精品偷拍各种wc美女嘘嘘| 中文字幕精品久久| 欧美在线视频一区二区| 欧美日韩在线看| 日本不卡免费高清视频| 国产精品一区二区三区在线播放| 国产精品综合不卡av| 欧美中文在线观看| 久久亚洲电影天堂| 欧美一区三区三区高中清蜜桃| 亚洲精品久久久久久久久久久久久| 亚洲精品久久视频| 亚洲国产精品福利| 久久久精品国产| 日韩精品视频免费| 中文字幕亚洲字幕| 亚洲欧美中文日韩在线| 日韩小视频网址| 亚洲一区中文字幕在线观看| 亚洲精品一二区| 7777精品视频| 国产精品久久久久久五月尺| 日韩精品视频在线| 668精品在线视频| 国产欧美日韩专区发布| 午夜免费久久久久| 亚洲欧美日韩精品| 国产欧美日韩精品在线观看| 亚洲美女中文字幕| 欧美性xxxx在线播放| 91亚洲国产精品| 亚洲一区二区免费在线| 欧美日产国产成人免费图片| 欧美成年人视频网站| 午夜精品99久久免费| 色小说视频一区| 91精品啪aⅴ在线观看国产| 久久亚洲综合国产精品99麻豆精品福利| 国产精品免费福利| 日韩电影中文字幕一区| 亚洲国产日韩欧美在线动漫| 国产精品美女免费看| 日韩一区二区久久久| 国产日产欧美a一级在线| 国产精品视频永久免费播放| 久久av红桃一区二区小说| 91精品久久久久久久久久入口| 91国内在线视频| 国产成人自拍视频在线观看| 久久久免费在线观看| 亚洲一区二区三区在线免费观看| 欧美美女18p| 国产成人在线精品| 日韩成人在线免费观看| 奇米4444一区二区三区| 欧美黑人又粗大| 黄色成人在线免费| 日本亚洲欧美三级| 欧美xxxx综合视频| 性色av一区二区三区在线观看| 久久九九亚洲综合| 色综合久久久久久中文网| 97视频在线观看亚洲| 亚洲国产天堂久久国产91| 日韩福利在线播放| 伊人男人综合视频网| 欧美日韩国产在线看| 国模吧一区二区| 91精品久久久久久久久久| 日韩国产在线看| 精品国产精品自拍| 日日骚久久av| 欧美性受xxxx黑人猛交| 中文字幕日韩欧美在线| 韩国国内大量揄拍精品视频| 亚洲国产日韩欧美在线图片| 日韩av在线天堂网| 欧美一级大片在线观看| 日韩一区二区欧美| 美女视频黄免费的亚洲男人天堂| 欧美日本亚洲视频| 日韩成人黄色av| 高清日韩电视剧大全免费播放在线观看| 精品国产自在精品国产浪潮| 日韩精品久久久久久久玫瑰园| 精品国产欧美一区二区五十路| 成人夜晚看av| www.欧美精品一二三区| 亚洲视频在线免费看| 国产日韩欧美夫妻视频在线观看| 亚洲色图偷窥自拍| 国产日韩欧美在线观看| 国产精品久久久av| 日本欧美国产在线| 国产亚洲欧美另类中文| 欧美激情视频给我| 久久成人这里只有精品| 日本成人免费在线| 日韩av电影免费观看高清| 国产精品日韩久久久久| 久久99视频免费| 成人羞羞国产免费|