久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP單例模式與工廠模式詳解

這篇文章主要為大家詳細介紹了PHP單例模式與工廠模式的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一、單例模式又稱為職責模式,它用來在程序中創建一個單一功能的訪問點,通俗地說就是實例化出來的對象是唯一的。
所有的單例模式至少擁有以下三種公共元素:

1. 它們必須擁有一個構造函數,并且必須被標記為private
2. 它們擁有一個保存類的實例的靜態成員變量
3. 它們擁有一個訪問這個實例的公共的靜態方法

單例類不能再其它類中直接實例化,只能被其自身實例化。它不會創建實例副本,而是會向單例類內部存儲的實例返回一個引用。 

單例模式實例

<?php
class Single {
  private $name;//聲明一個私有的實例變量
  private function __construct(){//聲明私有構造方法為了防止外部代碼使用new來創建對象。
  
  }
 
  static public $instance;//聲明一個靜態變量(保存在類中唯一的一個實例)
  static public function getinstance(){//聲明一個getinstance()靜態方法,用于檢測是否有實例對象
   if(!self::$instance) self::$instance = new self();
   return self::$instance;
  }
 
  public function setname($n){ //給變量$name賦值
      $this->name = $n; 
   }
  public function getname(){ //取變量$name的值
      return $this->name; 
   }
 }
 
 
 $a = Single::getinstance();
 $b = Single::getinstance();
 $a->setname('hello world');
 $b->setname('good morning');
 echo $a->getname();//good morning
 echo $b->getname();//good morning
?>

二、工廠模式就是一種類,具有為您創建對象的某些方法,這樣就可以使用工廠類創建對象,而不直接使用new。

這樣如果想更改創建的對象類型,只需更改該工廠即可。

<?php
//工廠類(關于運算符的操作)
class factory{
 public static function dx($ope){
  switch($ope){
   case "+":
    return new plus();
    break;
   case "-":
    return new sub();
    break;
   case "%":
    return new rem();
    break;
  }
 }
} 
$ope = factory::dx("+");
$ope->a = 20;
$ope->b = 10;
echo $ope->opera();

工廠模式實例

class Factory {//創建一個基本的工廠類
  static public function fac($id){//創建一個返回對象實例的靜態方法
   if(1 == $id) return new A();
   elseif(2==$id) return new B();
   elseif(3==$id) return new C();
   return new D();
  }
 }
 
 interface FetchName {//創建一個接口
  public function getname();//
 }
 
 class A implements FetchName{
  private $name = "AAAAA";
  public function getname(){ 
      return $this->name; 
    }
 }
 
 class C implements FetchName{
  private $name = "CCCCC";
  public function getname(){
      return $this->name; 
    }
 }
 class B implements FetchName{
  private $name = "BBBBB";
  public function getname(){ 
      return $this->name;
    }
 }
 
 class D implements FetchName{
  private $name = "DDDDD";
  public function getname(){ 
      return $this->name; 
    }
}
 
 
 $o = Factory::fac(6);//調用工廠類中的方法
 if($o instanceof FetchName){
 echo $o->getname();//DDDDD
 }
 
 $p=Factory::fac(3);
 echo $p->getname();//CCCCC
?>

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

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP有序表查找之插值查找算法,簡單分析了插值查找算法的概念、原理并結合實例形式分析了php實現針對有序表插值查找的相關操作技巧,需要的朋友可以參考下
下面小編就為大家分享一篇ThinkPHP整合datatables實現服務端分頁的示例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP實現APP微信支付的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP實現的多維數組排序算法,結合實例形式對比分析了php針對多維數組及帶有鍵名的多維數組進行排序相關操作技巧與注意事項,需要的朋友可以參考下
這篇文章主要為大家詳細介紹了php結合ajaxuploadfile實現無刷新文件上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章給大家詳細介紹了PHP開發接口使用RSA進行加密解密方法,對此有興趣的朋友可以學習下。
主站蜘蛛池模板: 伊人网站在线 | 天堂影院av| 亚洲在线一区二区三区 | 91精品国产麻豆 | 亚洲精久 | 久久蜜桃精品 | 亚洲欧美综合精品另类天天更新 | 91精品国产欧美一区二区成人 | 午夜资源 | 日韩在线精品强乱中文字幕 | 成人在线视频一区二区三区 | 一区二区欧美在线 | 中文字幕视频一区 | 超碰在线人人 | 2021天天躁夜夜看 | av电影手机版 | 日韩视频在线免费观看 | 麻豆精品国产免费 | 亚洲高清av在线 | 日韩av福利在线观看 | 日本电影韩国电影免费观看 | 精品99久久 | 国产精品一区二区在线免费观看 | 国产精品日韩一区二区 | 欧美日韩中文字幕在线播放 | 男女激情网 | www.一区二区 | 午夜爽爽爽男女免费观看影院 | 亚洲一区亚洲二区 | 欧美午夜精品久久久久久浪潮 | 国产999精品久久久影片官网 | 午夜在线小视频 | 国产成在线观看免费视频 | 91aiai| 在线观看中文字幕 | 狠狠撸在线视频 | 热久久久久 | 一区二区三区国产好 | 国产在线对白 | 午夜精品视频在线观看 | 精品欧美一区二区精品久久 |