本文實(shí)例講述了PHP工廠模式、單例模式與注冊(cè)樹模式。分享給大家供大家參考,具體如下:
三種基本設(shè)計(jì)模式
1、工廠模式:工廠方法或者類生成對(duì)象,而不是在代碼中直接new
2、單例模式:使某個(gè)類的對(duì)象僅允許創(chuàng)建一個(gè)
3、注冊(cè)模式:全局共享和交換對(duì)象
工廠模式:
?php
namespace IMooc;
class Factory
{
static function createDatabase()
{
$db = new Database();
return $db;
}
}
$db = IMooc\Factory::createDatabase();
工廠模式的好處是,避免Database這個(gè)類,在很多個(gè)php文件都進(jìn)行new操作,如果Database這個(gè)類發(fā)生了一些變更(修改了名字或者參數(shù)),那這時(shí)候如果不工廠模就需要修改多出了,使用工廠模式,就只需要修改工廠方法即可。
單例模式:
?php
namespace IMooc;
class Database
{
protected $db;
private function __construct()
{
}
// 獲取數(shù)據(jù)庫(kù)操作實(shí)例
static function getInstance()
{
if(self::$db){
return self::$db;
}else{
self::$db = new self();
return self::$db;
}
}
}
// 無(wú)論調(diào)用多少次,只會(huì)創(chuàng)建一個(gè)實(shí)例
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
$db = IMooc\Database::getInstance();
注冊(cè)樹模式:
?php
namespace IMooc;
class Register
{
protected static $objects;
static function set($alias, $object)
{
self::$objects[$alias] = $object;
}
static function get($name)
{
return self::$objects[$name];
}
static function _unset($alias)
{
unset(self::$objects[$alias]);
}
}
$db = \IMooc\Register::get('db1');
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- PHP 工廠模式使用方法
- php設(shè)計(jì)模式 Factory(工廠模式)
- PHP中“簡(jiǎn)單工廠模式”實(shí)例代碼講解
- php基礎(chǔ)設(shè)計(jì)模式大全(注冊(cè)樹模式、工廠模式、單列模式)
- PHP實(shí)現(xiàn)單例模式最安全的做法
- php單例模式實(shí)現(xiàn)(對(duì)象只被創(chuàng)建一次)
- php利用單例模式實(shí)現(xiàn)日志處理類庫(kù)
- PHP設(shè)計(jì)模式之注冊(cè)樹模式分析
- PHP單例模式實(shí)例分析【防繼承,防克隆操作】
- PHP單例模式數(shù)據(jù)庫(kù)連接類與頁(yè)面靜態(tài)化實(shí)現(xiàn)方法