好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 深入分析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設計模式的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美韩一级片| 观音好大好爽h| 少妇婬乱全黄毛片久久久老牛 | 老师穿超薄肉丝袜| 欧美成人三级网站在线观看| 亚洲精品黑色丝袜系列| 91国精品产品一区二区三区贵吗| 秋霞理论影院福利院| 大尺度做爰无遮挡三级2024| 2022国产精品网站在线播放| 亚洲尺码欧洲尺码有哪些品牌好| 真人直播大片免费| 麻豆成人在线视频| 亚洲综合日韩| 日韩精品无码一区二区河北彩花 | 布拉芙夫人在线看| 做爰猛烈叫床揉捏奶| 91精品人妖一区二区三区四区| 人妻精品久久久久中文字幕69| 亚洲看片| 全黄做爰毛片免费看| 国产精品极品美女高潮视频播放 | 欧美人妻精品一区二区三区无码| 亚洲国产欧洲精品路线久久| 午夜性视频| 操女人的逼逼| 天堂网2021| 伊人午夜| 丰满一级中国免费毛片| 国产精品一区二| 朋友的朋友5| 91成人??在线观看喷潮| 日本XXXX69HD老师学生| 理论片2019| 欧美在线一卡二卡一卡3卡4卡5| 人人艹人人| 秋霞电影院午夜鲁丝片| homemaevideos女护士| 草逼片| 18禁无遮挡啪啪摇乳动态图,| 色欲AV午夜在线下载一区二区|