index.php
<?php
//介面卡模式
//介面卡模式只是將某個物件的介面適配為另乙個物件所期望的介面
//php介面卡模式原理,先建立目標實現方法,然後通過介面卡類來連線原功能和目標方法,來實現功能的擴充套件.
function __autoload($filename)
/* * 原來的功能中只有輸出錯誤到控制台,但是後來要求增加乙個輸出錯誤到csv中,方便記錄,在不更改基類的情況加,通過介面卡模式,繼承原來得錯誤類,
* 並且擴充套件到介面卡中,更改**,實現輸出到csv中.而且也不影響原來輸出到控制台中.實現功能的擴充套件.
*///注釋**模仿原來的錯誤輸出功能
//$error=new errorobject("404:not found");
// $log=new logtoconsole($error);
// $log->write();
//【主要角色】
//源(adaptee)角色:需要進行適配的介面
//介面卡(adapter)角色:對adaptee的介面與target介面進行適配;介面卡是本模式的核心,介面卡把源介面轉換成目標介面,此角色為具體類
//使用場景
//1、你想使用乙個已經存在的類,而它的介面不符合你的需求
//2、你想建立乙個可以復用的類,該類可以與其他不相關的類或不可預見的類協同工作
//3、你想使用乙個已經存在的子類,但是不可能對每乙個都進行子類化以匹配它們的介面。物件介面卡可以適配它的父類介面(僅限於物件介面卡)
//以下為增加新的功能
$error=new logtocsvadapter("404:not found");
$log=new logtocsv($error);
$log->write();
?>
原始功能類
errorobject.class.php
<?php
/* * 錯誤基類
*/class errorobject
function geterror()
}?>
logtoconsole.class.php
<?php
/* * 輸出到控制台,原始錯誤執行**
*/class logtoconsole
function write()
}?>
以上就是原來的功能,將指定的錯誤輸出到控制台顯示出來.現在的需求是擴充套件乙個寫入csv檔案中得功能.在不改變原來的功能的情況下.擴充套件功能
logtocsv.class.php
<?php
/* * 輸出錯誤到csv檔案
*/class logtocsv
function write()
}?>
接下來要做的就是將新得logtocsv方法和原來寫得errorobject連線起來使用,兩種方法,可以更改原來得errorobject類,或者是使用介面卡模式,新增乙個基類,來重寫原來的功能
logtocsvadapter.class.php
<?php
/* * 擴充套件錯誤類,並且增加新的功能來支援logtocsv類中的方法
php設計模式之介面卡模式
借鑑 適用性 原理 將要用到的角色分為以下幾種 target最早實現的介面,adaptee改善之後的介面,adapter對target和adapter進行適配,client呼叫介面 類介面卡模式 author mtg 目標角色 version 1.0 class target 目標點 public ...
PHP設計模式之介面卡模式
php設計模式之介面卡模式 1 介面卡模式的概念 介面卡設計模式只是將某個物件的介面適配為另乙個物件所期待的介面。2 uml靜態模型 3 單例模式舉例 今天從網路上爬了一些資料,爬下來的內容如下 所示,該內容在另一頁面直接顯示,這裡的爬蟲 就不寫了,只寫乙個模擬的效果。address 山東威海農副產...
PHP設計模式之 介面卡模式
介面卡要完成的功能很明確,引用現有介面的方法實現新的介面的方法。你的介面不改的話,我就利用現有介面和你對接一下吧。開 閉 原則,乙個軟體實體應當對擴充套件開放,對修改關閉 class toy describe 原有的介面 author nick abstract class toy class do...