中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php設計模式下

發布時間:2020-08-06 05:21:08 來源:網絡 閱讀:374 作者:lijingsan1 欄目:web開發

1 數據對象映射模式

1數據對象映射模式,是將對象和數據存儲映射起來,對一個對象的操作會映射為對數據存儲的操作

2在代碼中實現數據對象映射模式,我們實現一個ORM類,將復雜的SQL語句映射成對象屬性的操作

3結合使用數據對象映射模式、工廠模式、注冊模式


例子:

User.php

<?php


namespace IMooc;

class User

{

public $id;

public $name;

public $mobile;

public $regitime;


protected $db;

// 讀取 

function __construct($id){

$this->db = new \IMooc\Database\MySQL();

$this->db->connect('127.0.0.1','root','root','test');

$res = $this->db->query('select * from user limit 1');

$data = $res->fetch_assos();

$this->id = $data['id'];

$this->name = $data['name'];

$this->mobile = $data['mobile'];

$this->regitime = $data['regitime'];

}

// 可以在析構夠 執行 修改 插入 刪除

function __destruct(){

// 更新SQL

$this->db->query('update user set name = "{$this->name}", mobile="{$this->mobile}",regtime="{$this->regtime}",id="{$this->id}"');

}

}



index.php

<?php

$user = new User(1);

$user->mobile = '13880425377';

$user->name ='test';

$user->regtime = time();


var_dump($user->id,$user->name);


// 對對象的數據的讀寫



2 數據映射的復雜案例

index.php

<?php


class Page

{

function index()

{


}

$user = new \IMooc\User(1);

$user->mobile = '13880425377';

$user->name ='test';

$user->regtime = time();

}


工廠模式、注冊器模式、單立模式



9 觀察者模式

1 觀察者模式(Observer),當一個對象狀態發生改變時,依賴它的對象全部會收到通知,并自動更新

2 常見:一個事件發生后,要執行一連串更新操作,傳統的編程方式,就是在時間的代碼之后直接加入處理邏輯,當更新的邏輯增多之后,代碼會變得難以維護,這種方式是耦合的,侵入式的,增加新的邏輯需要修改主體的代碼

3 觀察者模式實現了低耦合,非侵入式的通知于更新機制。


index.php

<?php

class Event extentd \IMooc\EventGenerator

{

function trigger()

{

echo 'Event<br/>';

echo '邏輯1<br/>';

echo '邏輯2<br/>';

$this->nodtify();

}

}

$event = new Event;

$event->trigger();


// 傳統之上;  高度耦合,侵入式;


EventGenerator.php

<?php

namespace IMooc;

abstract class EventGenerator

{

protected $observers = array();

function addObserver(Observer$observer){

}


function notefy(){

foreach($this->observers as $observer){

$observer->update();

}

}

}


Observer.php

<?php

namespace IMooc;

interface Observer

{

function update($event_info=null);

}


<?php

class Observer1 implements \IMooc\Observer

{

function update()

{

}

}


10 原型模式

1 與工廠模式作用類似,都是用來創建對象

2 與工廠模式的實現不同,原型模式是先創建好一個原型對象,然后通過clone原型對象來創建新的對象,這樣就免去了類創建時重復的初始化操作

3 原型模式適用于大對象的創建,創建一個大對象需要很大的開銷,如果每次new就會消耗很大,原型模式僅需內存拷貝即可。

<?php

// 原型模式


class Canvas{

// 模擬畫布

function init(){

echo 'init';

}

function draw(){

echo 'draw';

}

}


$canvas1 = new Canvas;

$canvas1->init();// 如果初始化消耗系統資源多

$canvas1->draw();


// 原型對象初始化  這樣就少了初始化 

$prototype = new Canvas;

$prototype->init();


$canvas2 = clone $prototype;

$canvas2->draw();


$canvas3 = clone $prototype;

$canvas3->draw();


11 裝飾器模式

1 裝飾器模式(Decorator),可以動態地添加修改類的功能

2 一個類提供了一項功能,如果要在修改并添加額外的功能,傳統的編程模式,需要寫一個子類集成它,并重新實現類的方法

3 使用裝飾器模式,僅需要在運行時添加一個裝飾器對象即可實現,可以實現最大的靈活性。

12 迭代器模式

1 在不需要了解內部實現的前提下,遍歷一個聚合對象的內部元素

2 相比于傳統的編程模式,迭代器模式可以隱藏遍歷元素所需的操作



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大方县| 忻州市| 左贡县| 饶河县| 砀山县| 碌曲县| 仲巴县| 弋阳县| 大关县| 勃利县| 三台县| 宝山区| 沂水县| 子长县| 前郭尔| 建湖县| 金坛市| 蒙阴县| 江油市| 仁布县| 宁远县| 成武县| 耒阳市| 德格县| 犍为县| 元阳县| 铁岭市| 油尖旺区| 东平县| 河北区| 改则县| 鄂伦春自治旗| 宁安市| 澎湖县| 米泉市| 林芝县| 呼和浩特市| 开平市| 政和县| 湖南省| 正定县|