您好,登錄后才能下訂單哦!
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 相比于傳統的編程模式,迭代器模式可以隱藏遍歷元素所需的操作
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。