»¶ÓÄú·ÃÎÊÎÒ°®IT¼¼ÊõÍø£¬½ñÌìС±àΪÄã·ÖÏíµÄ±à³Ì¼¼ÊõÊÇ£º¡¾¡¶PHPÉè¼ÆÄ£Ê½½éÉÜ¡·µÚËÄÕ µ¥¼þģʽ¡¿£¬ÏÂÃæÊÇÏêϸµÄ·ÖÏí£¡
¡¶PHPÉè¼ÆÄ£Ê½½éÉÜ¡·µÚËÄÕ µ¥¼þģʽ
¼¸ºõËùÓÐÃæÏò¶ÔÏóµÄ³ÌÐòÖУ¬×ÜÓÐÒ»Á½¸ö×ÊÔ´±»´´½¨³öÀ´£¬ÔÚ³ÌÐòÓ¦ÓÃÖгÖÐø±»¹²ÏíʹÓá£ÀýÈ磬ÕâÑùµÄÒ»¸ö×ÊÔ´£¬ÔÚÒ»¸öµç×ÓÉÌÎñ³ÌÐòµÄÊý¾Ý¿âÁ¬½ÓÖÐʹÓãºÕâ¸öÁ¬½ÓÔÚÓ¦ÓóÌÐòÆô¶¯Ê±³õʼ»¯£¬³ÌÐòÓÚÊÇ¿ÉÒÔÓÐЧµÄÖ´ÐУ»µ±³ÌÐò½áÊøÊ±£¬Õâ¸öÁ¬½Ó×îÖÕ±»¶Ï¿ª²¢Ïú»Ù¡£Èç¹ûÊÇÄãдµÄ´úÂ룬û±ØÒªÔÚÿʱÿ¿Ì´´½¨Ò»¸öÊý¾Ý¿âÁ¬½Ó£¬ÕâÑù·Ç³£µÍЧ¡£ÒѾ½¨Á¢ºÃµÄÁ¬½ÓÓ¦¸ÃÄܱ»ÄãµÄ´úÂë¼òµ¥Öظ´µÄʹÓá£Õâ¸öÎÊÌâ¾ÍÊÇ£¬»ùÓÚÒÔÉÏÒªÇóÄ㽫ÈçºÎ½øÐÐÕâ¸öÊý¾Ý¿âÁ¬½Ó£¿£¨»òÕßÁ¬½ÓÆäËü±»Ñ»·Ê¹ÓõÄΨһ×ÊÔ´£¬±ÈÈçÒ»¸ö¿ª·ÅÎļþ»òÕßÒ»¸ö¶ÓÁС££©
ÎÊÌâ
ÄãÔõÑùÈ·±£Ò»¸öÌØÊâÀàµÄʵÀýÊǶÀÒ»ÎÞ¶þµÄ£¨ËüÊÇÕâ¸öÀàµÄΨһʵÀý£©£¬²¢ÇÒËüºÜ´æÈ¡ÈÝÒ×ÄØ£¿
½â¾ö·½°¸
µ±È»£¬È«¾Ö±äÁ¿ÊÇÏÔ¶øÒ×¼ûµÄ½â¾ö·½°¸¡£µ«Ëü¾ÍÏñÅ˶àÀµÄºÐ×Ó£¨ÕýÈ·µÄÅжÏÀ´×Ô¾Ñ飬¶ø´íÎóµÄÅжϲúÉú¾Ñé¡£Õâ¾äÑèÓï¾ÍÊÇÕâ¸öÒâ˼¡££©£¬ÄãµÄÈκδúÂë¶¼ÄÜÐÞ¸ÄÈ«¾Ö±äÁ¿£¬Õ⽫²»¿É±ÜÃâµÄÒýÆð¸ü¶àµ÷ÊÔµÄÒâÍâ¡£»»¾ä»°Ëµ£¬È«¾Ö±äÁ¿µÄ״̬×ÜÊÇ»á³öÏÖһЩÎÊÌâµÄ£¬£¨ÕâÀïÓÐÒ»¸ö¹ØÓÚÈ«¾Ö±äÁ¿Ê¹ÓÃÎÊÌâ²»´íµÄÃèÊö£¬http://c2.com/cgi/wiki?GlobalVariablesAreBad£©¡£
µ±ÄãÐèÒªÒ»¸öÌØÊâÀàµÄΨһʵÀýʱ£¬Ê¹ÓÃÕâ¸öÃû×ֽе¥¼þµÄģʽ¡£»ùÓÚµ¥¼þģʽµÄÀàÄÜʵÀý»¯ºÍ³õʼ»¯Õâ¸öÀàµÄÒ»¸öʵÀý£¬²¢ÇÒÌṩÿʱÿ¿Ì¾ø¶ÔÏàͬµÄÁ¬½Ó¡£Ò»°ãÇé¿öÏÂʹÓÃÃûΪgetInstance()µÄ¾²Ì¬·½·¨ÊµÏÖ¡£
¹Ø¼üÎÊÌâÊÇ£¬ÈçºÎÔÚÿʱÿ¿Ì»ñµÃÒ»¸ö¾«È·Í³Ò»µÄʵÀý¡£Çë¿´ÏÂÃæµÄÀý×Ó£º
|
class DbConn { |
×¢ÊÍ£ºassertReference
assertReference() ·½·¨È·±£Á½¸ö±»´«µÝµÄ²ÎÊýÒýÓÃ×ÔÏàͬµÄPHP±äÁ¿¡£
ÔÚPHP4ÖУ¬ÕâÀï¶ÏÑÔÁ½¸ö±»²âÊԵIJÎÊýµÄÈ´ÊÇÏàͬµÄ¶ÔÏó¡£assertReference() Õâ¸ö·½·¨ÔÚÒÆÖ²µ½PHP5ÒÔºóÒ²Ðí¾Í²»ÍƼöʹÓÃÁË¡£
Õâ¸ötest·½·¨ÓÐÁ½¸ö¶ÏÑÔ£ºµÚÒ»¸öÅжϵڵ÷Óþ²Ì¬·½·¨DbConn::getInstance()·µ»ØµÄÖµÊÇDbConn¶ÔÏóµÄʵÀý£¬µÚ¶þ¸öÓÃÀ´Åжϵڶþ´Îµ÷ÓÃgetInstance()·½·¨·µ»ØµÃÖµÒýÓõÄÊÇÏàͬµÄ¶ÔÏóʵÀý£¬ÕâÒâζ×ÅËûÃÇʹÓõÄÊÇͬһ¸ö¶ÔÏó¡£
³ýÁ˶ÏÑÔ´úÂëÔ¤ÆÚµÄÖ´Ðнá¹û£¬TestҲԤʾÁËgetInstance()µÄÕýÈ·Ó÷¨(PHP4)£º$local_conn_var=&DbConn::getInstance()¡£ÒýÓã¨=&£©¾²Ì¬·½·¨µÄ·µ»ØÖµ¸³Öµ¸øÁËÕâ¸ö¾Ö²¿±äÁ¿¡£
ÔÙдÁíÍâÒ»¶Î²âÊÔ´úÂ룺ֱ½ÓÓÓnew”À´ÊµÀý»¯Ò»¸öµ¥¼þÀà»áÒýÆðijЩÀàÐ͵ĴíÎó¡£test´úÂëÈçÏ£º
| function TestBadInstantiate() { $obj=& new DbConn; $this->assertErrorPattern( ‘/(bad|nasty|evil|do not|don\’t|warn).*’. ‘(instance|create|new|direct)/i’); } |
Ñù±¾´úÂë
µ¥¼þģʽÊÇÒ»¸öºÜÓÐȤµÄģʽ¡£ÈÃÎÒÃÇÓÃPHP4ºÍPHP5Á½ÖÖ·½Ê½À´Ì½¾¿ËüµÄʵÏÖ¹ý³Ì£¬ÏÖÔÚ´ÓPHP4¿ªÊ¼¡£
È«¾Ö·½Ê½
ÀíÂÛÉÏ˵£¬Ò»¸öÈ«¾Ö±äÁ¿¿ÉÒÔÉú³ÉÒ»¸öÍêÃÀµÄµ¥¼þ£¬µ«È«¾Ö±äÁ¿¿ÉÄܱ»Ð޸ģºÔÚ´úÂëÔËÐйý³ÌÖУ¬²»Äܱ£Ö¤È«¾Ö±äÁ¿Ö¸ÏòµÄÊÇÒ»¸ö¶ÔÏó¡£Òò¶ø£¬²»ÈÃÈ«¾Ö±äÁ¿ÔÚÈ«¾ÖÖ±½ÓÒýÓ㬾ͿÉÒÔ¼õÉÙ“Ì«ËæÒâ·ÃÎÊ”Õâ¸öÈ«¾Ö±äÁ¿µÄÎÊÌâ¡£±ÈÈç˵£¬Õâ¶Î´úÂëʹÓÃÒ»¸ö·Ç³£³¤¶øÇÒ¶ÀÌØµÄÃû×Ö£¬´Ó¶ø“Òþ²Ø”ÁËÈ«¾Ö±äÁ¿µÄÒýÓá£
| class DbConn { function DbConn($fromGetInstance=false) { if (M_E !=$fromGetInstance) { trigger_error(‘The DbConn class is a Singleton,’ .’ please do not instantiate directly.’); } } function &getInstance() { $key=‘__some_unique_key_for_the_DbConn_instance__’; if (!(array_key_exists($key, $GLOBALS) && is_object($GLOBALS[$key]) && ‘dbconn’==get_class($GLOBALS[$key]) )) { $GLOBALS[$key]=& new DbConn(M_E); } return $GLOBALS[$key]; } } |
±íʾ³ÉÒ»¸öUMLÀàͼ£¬½â¾ö°ì·¨ÈçÏ£º
Èç¹ûÄ㲻ѡÓÃÕâ¸ö“ÉñÃØ²ÎÊý”£ÀàÐͱ£»¤£¬½¨Á¢Ò»¸öÈ«¾Ö±ê¼ÇÊÇÁíÍâÒ»¸öÑ¡Ôñ£¬ÓÃËüÀ´ÑéÖ¤ÄãÊÇͨ¹ýgetInstance()·½·¨À´´´½¨µÄ¶ÔÏó¡£±£»¤·½Ê½´Ó“ÄãÖªµÀËüµÄÃû×Ö”¸Ä±ä³É“Ëü´æÔÚÓÚ»·¾³ÖД¡£
ÏÂÃæÓиöÀý×Ó£¬Ëü½âÊÍÁËΪʲô¹¹Ô캯Êý±£»¤´úÂëÓÐÒ»¸öÈ«¾ÖµÄ±êʶ£º
|
class DbConn { |
PHP4ÔÊÐíÄã¸Ä±ä¹¹Ô캯ÊýÖÐ$thisµÄÖµ¡£ÔÚ¹ýÈ¥£¬ÎÒÃÇ»áϰ¹ßÉèÖà $this £½ null£»µ±ÓÐÒ»¸ö´´½¨¹¹Ôì´íÎóʱ£¬È·±£ÎÞЧµÄ¶ÔÏó²»Äܱ»´úÂë¼ÌÐøÊ¹Óá£PHP4ÖкÜÓÐÓõĶ«Î÷£¬ÔÚPHP5Öв¢²»¼æÈÝ£¬½«À´»áÔÚÄãµÄ´úÂëÖеõ½ÑéÖ¤£¬ÕâÖÖ¼¼Êõ²»ÔÙ±»ÍƼö¡£
Õâ¶Î´úÂëÖÐÁíÍâÒ»¸öÖØµãÊÇÒýÓòÙ×÷&µÄÓ÷¨¡£ÓÐÁ½Öֵط½ÐèҪʹÓÃ&¡£µÚÒ»ÖÖÊÇÔÚº¯Êý¶¨Òåʱ£¬ÔÚº¯ÊýÃû×ÖǰÓÃÀ´±íʾ½«·µ»ØÒ»¸öÒýÓᣵڶþÖÖÊǽ«ÐµÄDbConn¶ÔÏó¸³Öµ¸ø$GLOBALSÊý×é¡££¨ÔÚÐòÑÔºÍÖµ¶ÔÏóÕ½ÚÖÐÌáµ½¹ý£ºÔÚPHP4ÖУ¬Äã×Ü»áʹÓÃ&²Ù×÷·û£¬ÒÔÒýÓõķ½Ê½´´½¨¡¢´«µÝºÍ·µ»Ø¶ÔÏ󣬣©
getInstance()·½·¨µÄÌõ¼þ¼ì²é£¬³£³£±»Ð´³ÉûÓо¯Ê¾µÄÇé¿öÏÂÔËÐУ¬ÉõÖÁÔÚE_ALLµÄ´íÎó¼¶±ðÏÂÒ²²»»áÌáʾ¡£Ëü¼ì²éÔÚ$GLOBALÊý×éÖÐÊʵ±µÄλÖÃÊÇ·ñÓÐÒ»¸öDbConn¶ÔÏó£¬Èç¹ûûÓУ¬¾ÍÔÚÄÇÀï´´½¨Õâ¸ö¶ÔÏó¡£Õâ¸ö·½·¨ÓÚÊÇ·µ»ØÁËÕâÑùµÄ½á¹û£¬Õâ¸ö¶ÔÏóÄܱ»Öظ´´´½¨»òÕßÕâ¸ö¶ÔÏóÔÚ֮ǰÒѾ±»Õâ¸ö·½·¨´´½¨¹ýÁË¡£µ±·½·¨½áÊøÊ±£¬Äã¿ÉÒÔÈ·ÈÏÒѾӵÓÐÕâ¸öÀàµÄÓÐЧʵÀý£¬¶øÇÒËüÒѾ±»ÓÐЧ³õʼ»¯¡£
¾²Ì¬·½Ê½
¹ØÓÚÈ«¾Ö±äÁ¿µÄÎÊÌ⣬ÉõÖÁÒþ²ØÔÚgetInstance()ÖеÄÈ«¾Ö±äÁ¿ÖÐÒ²´æÔÚ¡£ÒòΪȫ¾Ö±äÁ¿Ôڽű¾µÄÈκεط½¶¼ÓÐЧ£¬ÔÚûÓÐ×¢Òâµ½µÄÇé¿öÏ£¬ÄãÒÀÈ»ÓпÉÄÜÆÆ»µÕâ¸öÈ«¾Ö±äÁ¿£¬
ÔÚgetInstance()·½·¨ÄÚ²¿Ê¹Óþ²Ì¬±äÁ¿À´´æ´¢SingletonÊÇÒ»¸öÏԵøɾ»µÄ°ì·¨¡£µÚÒ»¸ö´úÂëÆ¬¶ÏÈçÏ£º
| class DbConn { // ... function &getInstance() { static $instance=false; if (!$instance) $instance=& new DbConn(M_E); return $instance; } } |
| class DbConn { function DbConn($fromGetInstance=false) { if (M_E !=$fromGetInstance) { trigger_error(‘The DbConn class is a Singleton,’ .’ please do not instantiate directly.’); } } function &getInstance() { static $instance=array(); if (!$instance) $instance0=& new DbConn(M_E); return $instance0; } } |
ËäÈ»Õâ¶Î´úÂëÓеãÒÀÀµPHPµÄ²¼¶û·½Ê½£¬µ«Ëü±ÈÄǸöÈ«¾Ö°æ±¾¸üÑϽ÷£ºÔÚÌõ¼þ¼ì²âʱ£¬Ê¹ÓÃÒ»¸ö¿ÕµÄÊý×é»áµÃµ½½á¹ûfalse¡£¾ÍÏñÔÚDbConnÀàµÄǰһ¸ö°æ±¾Ò»Ñù£¬ÔÚº¯ÊýµÄ¶¨ÒåºÍ¸³Öµ²¿·ÖÐèÒªÒýÓòÙ×÷·û¡£
PHP5Öеĵ¥¼þģʽ
PHP5ÖиüÈÝÒ×ʵÏÖµ¥¼þģʽ£¬PHP5¶ÔÓÚÀàÄÚ²¿±äÁ¿ºÍº¯ÊýµÄ·ÃÎÊ¿ØÖƱ»¼ÓÇ¿ÁË¡£½«DbConn::_construct()¹¹Ôì·½·¨ÉèÖÃΪ˽ÓÐ(private)£¬Õâ¸öÀà¾Í²»Äܱ»Ö±½ÓʵÀý»¯¡£ÓÃUMLͼ±íʾ£¬PHP5µÄDbConnµ¥¼þģʽÈçÏ£º
×éºÏʹÓþ²Ì¬·½·¨ºÍ¾²Ì¬±äÁ¿±£³ÖÕâ¸öʵÀý£¬²¢ÇÒÉèÖù¹Ô캯ÊýΪ˽ÓУ¬ÒÔ·ÀÖ¹Ö±½ÓʵÀý»¯Àà¶ø´´½¨ÊµÀý£¬´úÂëÈçÏ£º
class DbConn {
static $instance=false;
private function __construct() {}
public function getInstance() {
if (!DbConn::$instance) {
DbConn::$instance=new DbConn;
}
return DbConn::$instance;
}
}
½áÂÛ
ÏÖÔÚÄãÒѾ¿´µ½¼¸ÖÖµ¥¼þÉè¼ÆÄ£Ê½µÄʵÏÖ·½Ê½ÁË£¬µ±Äã×ÅÑÛÓÚʵÏÖÕâ¸öÉè¼ÆÄ£Ê½Ê±ºò£¬ÎÒÃÇÒª×ÐϸȨºâ¿¼ÂÇ¡£
Ê×ÏÈ£¬Ò»¸öµ¥¼þ¶ÔÏó²»ÊÇÒ»¸ö“ºÜºÃµÄ”È«¾Ö±äÁ¿¡£¾ÙÀýÀ´Ëµ£¬Èç¹ûÒ»¸ö·½·¨ÐèÒªÒ»¸öµ¥¼þ¶ÔÏ󣬸üÏÔ¶øÒ×¼ûµÄÓ÷¨ÊǰÑËüµ±×÷Ò»¸ö²ÎÊý´«µÝÀ´Ê¹Óá£
ͬÑù£¬ÒòΪËü¿ÉÒÔÔÚ“È«¾Ö”µÃµ½Ê¹Óã¬ÄãºÜÈÝÒ׾ͻὫËùÓÐÖÖÀàµÄ“³£Óú¯Êý”·ÅÖõ½Ò»¸öµ¥¼þÀàÖС£Õâ¸öÊÇÄãÐèÒª±ÜÃâµÄ£¬ÐèÒªµÄʱºò£¬Äã²Å°Ñº¯Êý·â×°µ¥¼þÀàÖС£
Monostate Pattern(µ¥Ì¬Ä£Ê½)£ºÀ൥¼þģʽ
ÓÐʱºò£¬ÎÒÃÇÐèÒªÕâÑùÒ»¸öÀ࣬ËùÓÐÀàµÄʵÀý¶¼¹²ÏíËüµÄÈ«¾Ö״̬¨D¨D»»¾ä»°Ëµ£¬ËüËù²úÉúµÄÈκÎʵÀý·µ»ØÑϸñÒ»ÖµÄÐÅÏ¢¡£ºÍµ¥¼þģʽÀàËÆ£¬ÕâÊÇÒ»ÖÖ½Ð×öMonoState(µ¥Ì¬)µÄģʽ¡£ÔÚPHPÖУ¬ÄãʹÓÃÒ»ÖÖÓÅÃÀµÄÒýÓü¼ÇÉÀ´°ó¶¨È«¾ÖÊý¾Ý£¬Í¨¹ý°ÑÒ»¸öÈ«¾Ö±äÁ¿°ó¶¨µ½Ò»¸öʵÀý±äÁ¿À´ÊµÏÖMonoState¡£
¾Ù¸öÀý×Ó£¬ÈÃÎÒÃÇ´´½¨Ò»¸öÈ«¾ÖÓ¦ÓÃÅäÖÃÀà¡£ÎÞÂÛÄãÓÃMonoStateÀàµÄÄĸöʵÀý£¬Äã¶¼Äܵõ½Í¬ÑùµÄÖµ¡£
ÏÂÃæµÄ²âÊÔ´úÂëÓÃÀ´ÑéÖ¤´Î¹¦ÄÜ£º
| // PHP4 function TestApplConfig() { $this->assertIsA( $obj1=& new ApplicationConfig, ‘ApplicationConfig’); $this->assertIsA( $obj2=& new ApplicationConfig, ‘ApplicationConfig’); $test_val=‘/path/to/cache’.rand(1,100); $obj1->set(‘cache_path’, $test_val); $this->assertEqual($test_val, $obj2->get(‘cache_path’)); } |
ÏÂÃæÕâ¶Î´úÂëʵÏÖÁËMonoState£º
| class ApplicationConfig { var $_state; function ApplicationConfig() { $key=‘__stealth_singleton_state_index__’; if (!(array_key_exists($key, $GLOBALS) && is_array($GLOBALS[$key]))) { $GLOBALS[$key]=array(); } $this->_state=& $GLOBALS[$key]; } function set($key, $val) { $this->_state[$key]=$val; } function get($key) { if (array_key_exists($key, $this->_state)) { return $this->_state[$key]; } } |
Õâ¸ö¼¼ÇÉÄܹ»ÔÚÈκÎPHPµÄ×Ô¶¯È«¾Ö(superglobal)Êý×éʹÓã¬ÓÈÆäÔÚÓû§ÏûÏ¢¶ÓÁÐ$_SESSIONÖÐÓкÜÏÔÖøµÄЧ¹û¡£MonoStateÄÜͨ¹ýÄãµÄ´úÂëΪÓû§´æ´¢Ò»ÏµÁеÄʹÓÃÐÅÏ¢(ÄãÒªÏÔʾµÄÐÅÏ¢¿ÉÄÜÊÇ´ÓÁíÍâÒ»¸öÒ³Ãæ´«ÈëµÄ)¡£$_SESSIONÊÇÒ»¸ö´æ´¢ÕâЩÐÅÏ¢µÄºÃµØ·½£¬ÒÔ·½±ãÕâЩÐÅÏ¢ÔÚÒ³ÃæÌø×ªºóÄܳÖÐøÊ¹Óá£
Õâ¸ö¼¼ÇɵĺËÐÄÊÇ$this->state=& $GLOBALS[$key]; ¡£ÔÚÈ·¶¨$GLOBALS[$key]ÊÇÒ»¸öÊý×éºó£¬´úÂë°ó¶¨Ò»¸öÈ«¾ÖÊý×éµÄÒýÓøøÀà±äÁ¿$this->state¡£´Ó¶ø£¬ÈκÎ$this->stateµÄ¸Ä±ä¶¼×ÔÈ»¶øÑÔµØÍ¬²½µ½È«¾ÖÊý×飬°üÀ¨ÀàµÄÆäËüʵÀý¡£Test´´½¨ÁËMonoStatelÀàµÄÁ½¸ö²»Í¬ÊµÀý£¬¸Ä±äÆäÖÐÒ»¸ö£¬ÑéÖ¤ÁíÍâÒ»¸öÊÇ·ñÒ²Ò»Æð±»¸Ä±äÁË¡£Õâ¶Î´úÂëºÜ¼òµ¥µÄÑ¡ÔñÁËÕâ¸ö¾²Ì¬Êý×é$instancedeµÄµÚÒ»¸öÔªËØ£¬ÓÃÀ´±£³Öµ¥¼þDbConnsʵÀýµÄÒýÓá£Zend 1ÒýÇæÔÚPHP4Öв»ÄÜ´æ´¢¾²Ì¬±äÁ¿µÄÒýÓà (Çë¿´http://www.php.net/manual/en/language.variables.scope.php#AEN3609)¡£Ê¹ÓÃÒ»¸ö¹¤×÷Çø´æ´¢¾²Ì¬Êý×飬²¢ÇÒ½«Õâ¸öµ¥¼þʵÀýµÄÒýÓ÷ÅÖõ½Ò»¸öÒÑÖªµÄÊý×éÖС£getInstance()·½·¨ÈçÏ£ºÌáʾÔÚDbConnµÄ¹¹Ô캯ÊýÖУ¬Äã¿ÉÄܶÔ$fromGetInstanceµÄĬÈϲÎÊý¸Ðµ½ÒÉ»ó¡£ÔÚ¶ÔÏó±»Ö±½ÓʵÀý»¯Ê±£¬ËüÄܹ»Ìṩ£¨ºÜ΢ÈõµÄ£©±£»¤£º³ý·ÇÕâ¸öĬÈÏÖµ±ä³Ée £¨ÔÚPHPµÄÊýѧ³£Á¿ÖÐ M_E £½ 2.718281828459£©£¬·ñÔòÕâ¶Î´úÂë»á±¨´í¡£Õâ¶Î´úÂëÖ±½Ó´´½¨ÁËÒ»¸ö DbConn µÄʵÀý£¬½«»áÒýÆðPHP±¨´í¡£ÎªÁËÈôúÂë¸üÎȶ¨£¬ÎÒÃÇÓÃPCREÕýÔò±í´ïʽÀ´Æ¥Å䱨´íÐÅÏ¢¡££¨ÏÔʾ±¨´íÐÅÏ¢µÄÈ·Çдë´Ê²¢²»ÖØÒª¡££©ÒÔÉÏËù·ÖÏíµÄÊǹØÓÚ¡¶PHPÉè¼ÆÄ£Ê½½éÉÜ¡·µÚËÄÕ µ¥¼þģʽ£¬ÏÂÃæÊDZà¼ÎªÄãÍÆ¼öµÄÓмÛÖµµÄÓû§»¥¶¯£º
¡¡¡¡Ïà¹ØÎÊÌ⣺PHPµÄµ¥Ì¬Éè¼ÆÄ£Ê½
¡¡¡¡´ð£º¶ÔÓÚjavaת¹ýÀ´³ÌÐòԱ˵Êǵ¥Ì¬Éè¼ÆÄ£Ê½£¬ÔÚPHPÉÏͨ³£ËµÊǵ¥Àýģʽ£¬Ëµ·¨²»Ò»Ñù£¬ÊÖ²áÉÏÒ²ÓнéÉÜ£º µ¥Àýģʽ£¨Singleton£©ÓÃÓÚΪһ¸öÀàÉú³ÉÒ»¸öΨһµÄ¶ÔÏó¡£×î³£Óõĵط½ÊÇÊý¾Ý¿âÁ¬½Ó¡£ ʹÓõ¥ÀýģʽÉú³ÉÒ»¸ö¶ÔÏóºó£¬¸Ã¶ÔÏó¿ÉÒÔ±»ÆäËüÖÚ¶à¶ÔÏóËù... >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺phpµ¥¼þģʽÊÇʲô £¿ÄÜ˵ÐÎÏóÒ»µãÂð
¡¡¡¡´ð£ºµ¥¼þģʽ£¬µ¥×Óģʽ£¬µ¥ÀýģʽÊÇÉè¼ÆÄ£Ê½ÖеÄÒ»¸ö¸ÅÄ¼´Ê¹ÓÃһЩÊÖ¶ÎÊǸÃÀàµÄ¶ÔÏóÔÚËùÓÐʹÓó¡ºÏÖÐÖ»ÓÐÒ»¸öʵÀý¡£È磺 public class A{ private A a=null; private A(){}; public A getInstance(){ if (a==null)a=new A(); return a; } } >>Ïêϸ
¡¡¡¡Ïà¹ØÎÊÌ⣺½éÉܼ¸¸öÄã±È½ÏÊìϤµÄÉè¼ÆÄ£Ê½,²¢¼òµ¥½éÉÜËüÃÇÊÇÈç...
¡¡¡¡´ð£ºÈçºÎ×öºÃ¼ô¼ÄØ£¿Ôڴ˱ÊÕß̸̸×Ô¼ºµÄ¹Ûµã£º¼ô¼¾ÍÊǽ«²»·ûºÏÖ÷ÌâµÄ²¿·Öɾ³ý²¢ÕâÀﻹ½éÉܼ¸¸ö¹ý¶ÉЧ¹ûµÄ²é¿´¼¼ÇÉ£ºÔÚTransitionsÃæ°åµÄ´°¿Ú¿ØÖƲ˵¥ÖУ¬Ñ¡Ôñ >>Ïêϸ
- ÆÀÂÛÁÐ±í£¨ÍøÓÑÆÀÂÛ½ö¹©ÍøÓѱí´ï¸öÈË¿´·¨£¬²¢²»±íÃ÷±¾Õ¾Í¬ÒâÆä¹Ûµã»ò֤ʵÆäÃèÊö£©
-
