PHP工廠模式、單例模式與注冊(cè)樹模式實(shí)例詳解
本文實(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常見(jiàn)數(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)方法
相關(guān)文章
php preg_match_all結(jié)合str_replace替換內(nèi)容中所有img
最近做站的時(shí)候,采集了大量的數(shù)據(jù),但采回來(lái)的數(shù)據(jù)基本上都要經(jīng)過(guò)過(guò)濾原站保留的數(shù)據(jù),其中IMG就是一個(gè)地方。網(wǎng)站上好多這些應(yīng)用例子似乎沒(méi)有必要“秀”出來(lái),但站已幾天沒(méi)寫日志,那就來(lái)一個(gè)吧2008-10-10PHP+jQuery實(shí)現(xiàn)即點(diǎn)即改功能示例
這篇文章主要介紹了PHP+jQuery實(shí)現(xiàn)即點(diǎn)即改功能,涉及php數(shù)組讀取、遍歷及jQuery事件響應(yīng)與動(dòng)態(tài)修改頁(yè)面元素屬性相關(guān)操作技巧,需要的朋友可以參考下2019-02-02php 出現(xiàn)Strict Standards: Only variables should be passed by r
這個(gè)問(wèn)題多半是因?yàn)橐脗鬟f參數(shù)引起的,解決辦法一是修改代碼不使用引用傳遞,需要的朋友可以參考下2017-08-08PHP 二維array轉(zhuǎn)換json的實(shí)例講解
今天小編就為大家分享一篇PHP 二維array轉(zhuǎn)換json的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08PHP swoole和redis異步任務(wù)實(shí)現(xiàn)方法分析
這篇文章主要介紹了PHP swoole和redis異步任務(wù)實(shí)現(xiàn)方法,結(jié)合具體實(shí)例形式對(duì)比分析了swoole和redis異步任務(wù)具體實(shí)現(xiàn)方法及區(qū)別,需要的朋友可以參考下2019-08-08PHP數(shù)組無(wú)限分級(jí)數(shù)據(jù)的層級(jí)化處理代碼
在很多朋友寫無(wú)限級(jí)分類數(shù)據(jù)時(shí)都直接使用遞歸來(lái)操作,下面我來(lái)介紹一下關(guān)于PHP無(wú)限分級(jí)代碼優(yōu)化方法,有需要的朋友可參考一下2012-12-12