結構應該是這樣的,Database.php中提供了所有的接口,where,connect, order, limit.....然后三種數據庫文件分別對其進行具體函數的實現。
2017-06-13
這里用到了ORM關系映射,用到了工廠模式,工廠模式的通用方法有個缺點就是不能傳
參數。所以還是定義了相對具體的工廠,生產不同的對象用不同的方法,同時在生產對象
的同時用到了單例思想,單例思想其實就是注冊器的嚴格版,單例只能注冊一個對象到
本類的私有屬性。注冊器卻可以注冊很多對象到自己的數組類型的屬性里去。對象的key是
根據工廠生產的時候傳入參數(通用生產方法里以類名為參數的方式行不通,應該也是可以動態組裝參數列表的,回頭研究哈)動態組裝的。再次生產同一個對象的時候,會根據這個同樣的參數按同樣的規則到數組里查詢對象,如果存在,就不生產,直接返回,如果不存在,就生
并注冊一個。方便下次調用
參數。所以還是定義了相對具體的工廠,生產不同的對象用不同的方法,同時在生產對象
的同時用到了單例思想,單例思想其實就是注冊器的嚴格版,單例只能注冊一個對象到
本類的私有屬性。注冊器卻可以注冊很多對象到自己的數組類型的屬性里去。對象的key是
根據工廠生產的時候傳入參數(通用生產方法里以類名為參數的方式行不通,應該也是可以動態組裝參數列表的,回頭研究哈)動態組裝的。再次生產同一個對象的時候,會根據這個同樣的參數按同樣的規則到數組里查詢對象,如果存在,就不生產,直接返回,如果不存在,就生
并注冊一個。方便下次調用
2017-06-08
需要新建Database.php
namespace Imooc;
interface IDatebase
{
function connect($host,$user,$passwd,$dbname);
function query($sql);
function close();
}
namespace Imooc;
interface IDatebase
{
function connect($host,$user,$passwd,$dbname);
function query($sql);
function close();
}
2017-06-08
我覺得老師講的還不錯,至少比那一大本書精簡,不過確實有漏洞,我是一邊敲代碼一邊看,發現工廠模式和單例模式其實是沖突的。工廠訪問不到單例模式的的構造方法,沒有辦法去new。另外老師在得工廠模式生產方法不夠通用,我改成這樣:
static function createObject($class,$alias){
$object=new $class();
Register::set($alias,$object);//結合注冊器進行注冊
return $object;
}
static function createObject($class,$alias){
$object=new $class();
Register::set($alias,$object);//結合注冊器進行注冊
return $object;
}
2017-06-08