校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 深入分析PHP設計模式

深入分析PHP設計模式

熱門標簽:公司外呼系統中心 菏澤語音外呼系統運營商 電子地圖標注怎么修改 天客通地圖標注 地圖標注符號樣式有 廈門400電話辦理選易號網 梧州市機器人外呼系統怎么樣 如何在世界地圖標注 臨沂crm外呼系統平臺

1、單例模式

一個類,只能允許有一個對象存在

?php
class test{
  protected function __construct(){
  }

  public static function getInstance(){
    $_test = new test();
    return $_test;
  }
}
$test = test::getInstance();
var_dump($test);
?>

2、工廠模式

工廠模式,顧名思義,如同工廠一樣,你把原材料放入工廠中,出來的是成品,而你并不需要知道工廠里做了什么,工廠模式主要用于解耦。

把對象的創建和使用的過程分開,比如: ClassA 調用 ClassB,那么 ClassA 只調用ClassB 的方法,
至于實例化 ClassB 則在工廠內實現。這樣既減少了代碼的重復使用,也方便對 ClassB 的后期維護。
如果 ClassB 實例化過程很復雜,使用簡單工廠模式就會發現外部無需關注復雜的實例化,只管調用 ClassB 的方法即可,減少錯誤

interface mysql{ 
  public function connect();
}
 
class mysqli2 implements mysql{
  public function connect(){
    echo 'mysqli';
  }
}
 
class pdo2 implements mysql{
  public function connect(){
    echo 'pdo';
  }
}

class mysqlFactory{
  static public function factory($class_name){
    return new $class_name();
  }
}
$obj = mysqlFactory::factory('pdo2');
$obj->connect();

3、注冊模式

注冊模式,解決全局共享和交換對象。已經創建好的對象,掛在到某個全局可以使用的數組上,

在需要使用的時候,直接從該數組上獲取即可。將對象注冊到全局的樹上。任何地方直接去訪問。

?php
class Register
{
    protected static $objects;
    function set($alias,$object)//將對象注冊到全局的樹上
    {
      self::$objects[$alias]=$object;//將對象放到樹上
    }
    static function get($name){
      return self::$objects[$name];//獲取某個注冊到樹上的對象
     }
  function _unset($alias)
  {
     unset(self::$objects[$alias]);//移除某個注冊到樹上的對象。
    }
}

\Auto\Register::set('single',$single);
$single = \Auto\Register::get('single');
var_dump($single);

4、適配器模式

將一個類的接口轉換成客戶希望的另外一個接口。

//目標角色
interface Aims
{
  public function newMethod1();
  public function newMethod2();
}
 
//需要被適配的類(Adaptee)
Class Man
{
  public function oldMethod1()
  {
    echo 'man';
  }
 
  public function oldMethod2()
  {
    echo '男人';
  }
}
 
//需要被適配的類(Adaptee)
Class Woman
{
  public function oldMethod1()
  {
    echo 'woman';
  }
 
  public function oldMethod2()
  {
    echo '女人';
  }
}
 
//適配器,
Class Adapters implements Aims
{
  private $adaptee;
  public function __construct($adaptee)
  {
    $this->adaptee = $adaptee;
  }
 
  public function newMethod1()
  {
    //以少量的代碼對被適配者作出適配
    echo 'sex :';
    $this->adaptee->oldMethod1();
  }
 
  public function newMethod2()
  {
    echo 'sex name :';
    $this->adaptee->oldMethod2();
  }
}
 
$adapter1 = new Adapters(new Man);
$adapter1->newMethod1();
$adapter2 = new Adapters(new Woman);
$adapter2->newMethod2();

5、策略模式

這是一個男人和女人的問題,將一組特定的行為和算法封裝成類,以適應某些特定的上下文環境。

UserStrategy.php
?php
/*
 * 聲明策略文件的接口,約定策略包含的行為。
 */
interface UserStrategy
{
  function showAd();
  function showCategory();
}

FemaleUser.php
?php
class FemaleUser implements UserStrategy
{
  function showAd(){
    echo "2016冬季女裝";
  }
  function showCategory(){
    echo "女裝";
  }
}

MaleUser.php
?php
class MaleUser implements UserStrategy
{
  function showAd(){
    echo "IPhone6s";
  }
  function showCategory(){
    echo "電子產品";
  }
}

Page.php//執行文件
?php
require_once 'Loader.php';
class Page
{
  protected $strategy;
  function index(){
    echo "AD";
    $this->strategy->showAd();
    echo "br>";
    echo "Category";
    $this->strategy->showCategory();
    echo "br>";
  }
  function setStrategy(UserStrategy $strategy){
    $this->strategy=$strategy;
  }
}

$page = new Page();
if(isset($_GET['male'])){
  $strategy = new MaleUser();
}else {
  $strategy = new FemaleUser();
}
$page->setStrategy($strategy);
$page->index();

6、原型模式

不常用,大的對象類才使用,表現在clone

7、觀察者模式

從面向過程的角度來看,首先是觀察者向主題注冊,注冊完之后,主題再通知觀察者做出相應的操作,整個事情就完了

/**
 * 事件產生類
 * Class EventGenerator
 */
abstract class EventGenerator
{
  private $ObServers = [];

  //增加觀察者
  public function add(ObServer $ObServer)
  {
    $this->ObServers[] = $ObServer;
  }

  //事件通知
  public function notify()
  {
    foreach ($this->ObServers as $ObServer) {
      $ObServer->update();
    }
  }

}

/**
 * 觀察者接口類
 * Interface ObServer
 */
interface ObServer
{
  public function update($event_info = null);
}

/**
 * 觀察者1
 */
class ObServer1 implements ObServer
{
  public function update($event_info = null)
  {
    echo "觀察者1 收到執行通知 執行完畢!\n";
  }
}

/**
 * 觀察者1
 */
class ObServer2 implements ObServer
{
  public function update($event_info = null)
  {
    echo "觀察者2 收到執行通知 執行完畢!\n";
  }
}

/**
 * 事件
 * Class Event
 */
class Event extends EventGenerator
{
  /**
   * 觸發事件
   */
  public function trigger()
  {
    //通知觀察者
    $this->notify();
  }
}

//創建一個事件
$event = new Event();
//為事件增加旁觀者
$event->add(new ObServer1());
$event->add(new ObServer2());
//執行事件 通知旁觀者
$event->trigger();

以上就是深入分析PHP設計模式的詳細內容,更多關于PHP設計模式的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP設計模式(九)外觀模式Facade實例詳解【結構型】
  • PHP設計模式(八)裝飾器模式Decorator實例詳解【結構型】
  • PHP設計模式(七)組合模式Composite實例詳解【結構型】
  • PHP設計模式(六)橋連模式Bridge實例詳解【結構型】
  • PHP設計模式(五)適配器模式Adapter實例詳解【結構型】
  • PHP設計模式(四)原型模式Prototype實例詳解【創建型】
  • PHP設計模式(三)建造者模式Builder實例詳解【創建型】
  • PHP設計模式(一)工廠模式Factory實例詳解【創建型】

標簽:雞西 郴州 白城 貴陽 綿陽 黃石 瀘州 迪慶

巨人網絡通訊聲明:本文標題《深入分析PHP設計模式》,本文關鍵詞  深入分析,PHP,設計模式,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入分析PHP設計模式》相關的同類信息!
  • 本頁收集關于深入分析PHP設計模式的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    欧美激情综合在线| 亚洲色图色小说| 国产欧美日本一区视频| 国产精品香蕉一区二区三区| 久久综合九色综合97_久久久| 国产一区中文字幕| 中文字幕av一区二区三区免费看 | 国产精一区二区三区| 中文字幕第一区综合| 91久久精品午夜一区二区| 亚洲成av人片一区二区三区| 精品国产99国产精品| 97久久精品人人澡人人爽| 五月天激情综合网| 国产精品亲子伦对白| 日本黄色一区二区| 日本大胆欧美人术艺术动态| 久久精品人人做人人综合| 91麻豆自制传媒国产之光| 奇米色一区二区三区四区| 国产精品传媒在线| 欧美一区三区四区| 色香蕉成人二区免费| 国产一区二区久久| 亚洲1区2区3区视频| 国产精品国产三级国产aⅴ入口 | 久久新电视剧免费观看| 91成人在线精品| 国产麻豆成人传媒免费观看| 亚洲无人区一区| 日本一区二区免费在线| 欧美成人一区二区| 日本乱人伦aⅴ精品| 丁香天五香天堂综合| 裸体一区二区三区| 亚洲国产婷婷综合在线精品| 国产精品素人视频| 久久综合精品国产一区二区三区| 欧美电影一区二区| 欧美中文字幕亚洲一区二区va在线 | 亚洲黄色在线视频| 国产精品美女www爽爽爽| 久久久久一区二区三区四区| 91精品啪在线观看国产60岁| 在线观看国产日韩| 91久久香蕉国产日韩欧美9色| www.综合网.com| 成人在线综合网| 国产成人免费在线| 国产乱子轮精品视频| 久久激情五月婷婷| 久久国产尿小便嘘嘘尿| 另类综合日韩欧美亚洲| 久久国产精品99精品国产| 另类小说综合欧美亚洲| 国产一区在线看| 国产成人a级片| 粉嫩一区二区三区在线看| 成人午夜视频在线| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 成人一区二区三区中文字幕| 国产白丝精品91爽爽久久| 国产传媒日韩欧美成人| 成人黄动漫网站免费app| 成人国产精品免费观看动漫| 99国内精品久久| 欧美日韩亚洲另类| 欧美成人性战久久| 欧美极品xxx| 一区二区三区国产豹纹内裤在线| 亚洲成人福利片| 日韩不卡在线观看日韩不卡视频| 蜜桃久久精品一区二区| 国产成人av电影| 色拍拍在线精品视频8848| 欧美私模裸体表演在线观看| 日韩一区二区三区精品视频| 久久久久九九视频| 亚洲精品免费一二三区| 三级久久三级久久| 国产精品香蕉一区二区三区| 欧亚一区二区三区| 日韩丝袜情趣美女图片| 中文无字幕一区二区三区| 亚洲国产日产av| 国产成人av电影在线| 欧美三级电影网| 国产亚洲一区二区在线观看| 亚洲一区二区欧美| 国产精品一区免费视频| 欧洲一区二区三区在线| 欧美精品一区二区三区一线天视频 | 国产在线精品一区二区夜色| 不卡的av中国片| 欧美日韩在线播放一区| 国产亚洲精品资源在线26u| 一区二区三区av电影| 久久国产精品露脸对白| 免费在线一区观看| 色av一区二区| 国产欧美精品国产国产专区| 日产精品久久久久久久性色| 91在线无精精品入口| 久久久91精品国产一区二区精品| 夜夜亚洲天天久久| 成人av影院在线| 精品国产亚洲一区二区三区在线观看| 亚洲欧美视频在线观看| 国产精品99久久久久久久vr| 欧美撒尿777hd撒尿| 中文字幕一区在线| 国产.欧美.日韩| 久久综合九色欧美综合狠狠| 日本最新不卡在线| 欧美午夜精品久久久久久超碰| 国产日韩av一区| 国内精品国产成人国产三级粉色| 欧美人与禽zozo性伦| 亚洲动漫第一页| 欧美日韩在线三区| 亚洲午夜视频在线| 欧洲国内综合视频| 亚洲精品ww久久久久久p站| 欧美日韩高清不卡| 亚洲女爱视频在线| 91网站黄www| 亚洲欧美另类小说| 色素色在线综合| 亚洲一区二区三区视频在线| 色婷婷亚洲婷婷| 亚洲一二三级电影| 欧美日韩国产高清一区| 日精品一区二区| 欧美麻豆精品久久久久久| 亚洲一二三区在线观看| 欧美日韩一区二区三区在线 | 免费人成精品欧美精品| 91精品国产综合久久久久久久久久| 亚洲成a人片在线观看中文| 欧美日韩一区二区三区在线看| 午夜久久久影院| 精品国产电影一区二区| 成人午夜视频免费看| 国产精品久99| 欧美色倩网站大全免费| 日本亚洲欧美天堂免费| 2欧美一区二区三区在线观看视频| 国产黑丝在线一区二区三区| 综合久久久久综合| 欧美日韩不卡在线| 国产一区二区女| 国产精品免费人成网站| 在线亚洲高清视频| 美女诱惑一区二区| 国产精品乱码妇女bbbb| 欧美在线视频不卡| 久久国产欧美日韩精品| 国产精品国产a级| 欧美久久久久久久久| 国产一区二区视频在线| 亚洲欧美日韩中文字幕一区二区三区 | 国产精品一区2区| 亚洲伦理在线精品| 欧美一区二区视频在线观看| 成人午夜视频福利| 日本在线不卡一区| 国产精品女同互慰在线看| 91女厕偷拍女厕偷拍高清| 手机精品视频在线观看| 国产蜜臀97一区二区三区| 欧美日韩激情一区二区| voyeur盗摄精品| 激情久久五月天| 亚洲国产成人av网| 国产欧美精品日韩区二区麻豆天美| 欧美日韩三级一区二区| 成人av在线网| 老司机午夜精品| 国产乱码精品一区二区三| 夜夜夜精品看看| 中文在线一区二区| 精品国产一区二区在线观看| 日本高清视频一区二区| 国产一区二区三区电影在线观看| 亚洲午夜电影网| 亚洲青青青在线视频| 久久久久高清精品| 这里是久久伊人| 欧美视频一区二区三区四区| av午夜一区麻豆| 精品夜夜嗨av一区二区三区| 亚洲资源中文字幕| 亚洲精品成人悠悠色影视| 国产精品动漫网站| 国产精品视频一二三区 | 麻豆91免费观看| 男人的j进女人的j一区| 五月天国产精品| 天天做天天摸天天爽国产一区| 亚洲精品写真福利|