Éè¼Æģʽ Ò»Ê齫Éè¼ÆģʽÒýÈëÈí¼þÉçÇø£¬¸ÃÊéµÄ×÷ÕßÊÇ Erich Gamma¡¢Richard Helm¡¢Ralph Johnson ºÍ John Vlissides Design£¨Ë×³Æ ¡°ËÄÈ˰£©¡£Ëù½éÉܵÄÉè¼Æģʽ±³ºóµÄºËÐĸÅÄî·Ç³£¼òµ¥¡£¾¹ý¶àÄêµÄÈí¼þ¿ª·¢Êµ¼ù£¬Gamma µÈÈË·¢ÏÖÁËijЩ¾ßÓй̶¨Éè¼ÆµÄģʽ£¬¾ÍÏñ½¨ÖþʦÉè¼Æ·¿×Ӻͽ¨ÖþÎïÒ»Ñù£¬¿ÉÒÔΪԡÊÒµÄλÖûò³ø·¿µÄ¹¹Ô췽ʽ¿ª·¢Ä£°å¡£Ê¹ÓÃÕâЩģ°å»òÕß˵Éè¼Æģʽ Òâζ×Å¿ÉÒÔ¸ü¿ìµØÉè¼Æ¸üºÃµÄ½¨ÖþÎͬÑùµÄ¸ÅÄîÒ²ÊÊÓÃÓÚÈí¼þ¡£
Éè¼Æģʽ²»½ö´ú±íןü¿ì¿ª·¢½¡×³Èí¼þµÄÓÐÓ÷½·¨£¬¶øÇÒ»¹ÌṩÁËÒÔÓѺõÄÊõÓï·â×°´óÐÍÀíÄîµÄ·½·¨¡£ÀýÈ磬Äú¿ÉÒÔ˵ÄúÕýÔÚ±àдһ¸öÌṩËÉÉ¢ñîºÏµÄÏûÏ¢´«µÝϵͳ£¬Ò²¿ÉÒÔ˵ÄãÕýÔÚ±àдÃû³ÆΪ¹Û²ìÕß µÄģʽ¡£
ÓýÏСµÄʾÀýչʾģʽµÄ¼ÛÖµÊǷdz£À§Äѵġ£ÕâÍùÍùÓÐЩ´ó²ÄСÓõÄÒâ棬ÒòΪģʽʵ¼ÊÉÏÊÇÔÚ´óÐÍ´úÂë¿âÖз¢»Ó×÷Óõġ£±¾ÎIJ»Õ¹Ê¾´óÐÍÓ¦ÓóÌÐò£¬ËùÒÔÄú ÐèҪ˼Ë÷µÄÊÇÔÚÄú×Ô¼ºµÄ´óÐÍÓ¦ÓóÌÐòÖÐÓ¦ÓÃʾÀýÔÀíµÄ·½·¨ ¡ª¡ª ¶ø²»ÊDZ¾ÎÄÑÝʾµÄ´úÂë±¾Éí¡£Õâ²»ÊÇ˵Äú²»Ó¦¸ÃÔÚСӦÓóÌÐòÖÐʹÓÃģʽ¡£ºÜ¶àÁ¼ºÃµÄÓ¦ÓóÌÐò¶¼ÒÔСӦÓóÌÐòΪÆðµã£¬Öð½¥·¢Õ¹µ½´óÐÍÓ¦ÓóÌÐò£¬ËùÒÔûÓÐÀíÓɲ» ÒÔ´ËÀàÔúʵµÄ±àÂëʵ¼ùΪ»ù´¡¡£
¼ÈÈ»ÄúÒѾÁ˽âÁËÉè¼ÆģʽÒÔ¼°ËüÃǵÄÓÐÓÃÖ®´¦£¬ÏÖÔÚÎÒÃÇÀ´¿´¿´ PHP V5 µÄÎåÖÖ³£ÓÃģʽ¡£
×î³õÔÚÉè¼Æģʽ Ò»ÊéÖУ¬Ðí¶àÉè¼Æģʽ¶¼¹ÄÀøʹÓÃËÉÉ¢ñîºÏ¡£ÒªÀí½âÕâ¸ö¸ÅÄÈÃÎÒÃÇ×îºÃ̸һÏÂÐí¶à¿ª·¢ÈËÔ±´ÓÊ´óÐÍϵͳµÄ¼è¿àÀú³Ì¡£ÔÚ¸ü¸ÄÒ»¸ö´úÂëƬ¶Îʱ£¬¾Í»á·¢ÉúÎÊÌ⣬ϵͳÆäËû²¿·Ö ¡ª¡ª ÄúÔøÈÏΪÍêÈ«²»Ïà¹ØµÄ²¿·ÖÖÐÒ²ÓпÉÄܳöÏÖ¼¶ÁªÆÆ»µ¡£
¸ÃÎÊÌâÔÚÓÚ½ôÃÜñîºÏ ¡£ÏµÍ³Ä³¸ö²¿·ÖÖеĺ¯ÊýºÍÀàÑÏÖØÒÀÀµÓÚϵͳµÄÆäËû²¿·ÖÖк¯ÊýºÍÀàµÄÐÐΪºÍ½á¹¹¡£ÄúÐèÒªÒ»×éģʽ£¬Ê¹ÕâЩÀàÄܹ»Ï໥ͨÐÅ£¬µ«²»Ï£Íû½«ËüÃǽôÃÜ°ó¶¨ÔÚÒ»Æð£¬ÒÔ±ÜÃâ³öÏÖÁªËø¡£
ÔÚ´óÐÍϵͳÖУ¬Ðí¶à´úÂëÒÀÀµÓÚÉÙÊý¼¸¸ö¹Ø¼üÀà¡£ÐèÒª¸ü¸ÄÕâЩÀàʱ£¬¿ÉÄÜ»á³öÏÖÀ§ÄÑ¡£ÀýÈ磬¼ÙÉèÄúÓÐÒ»¸ö´ÓÎļþ¶ÁÈ¡µÄ User
Àà¡£ÄúÏ£Íû½«Æä¸ü¸ÄΪ´ÓÊý¾Ý¿â¶ÁÈ¡µÄÆäËûÀ࣬µ«ÊÇ£¬ËùÓеĴúÂ붼ÒýÓôÓÎļþ¶ÁÈ¡µÄÔʼÀà¡£Õâʱºò£¬Ê¹Óù¤³§Ä£Ê½»áºÜ·½±ã¡£
¹¤³§Ä£Ê½ ÊÇÒ»ÖÖÀ࣬Ëü¾ßÓÐΪÄú´´½¨¶ÔÏóµÄijЩ·½·¨¡£Äú¿ÉÒÔʹÓù¤³§Àà´´½¨¶ÔÏ󣬶ø²»Ö±½ÓʹÓà new
¡£ÕâÑù£¬Èç¹ûÄúÏëÒª¸ü¸ÄËù´´½¨µÄ¶ÔÏóÀàÐÍ£¬Ö»Ðè¸ü¸Ä¸Ã¹¤³§¼´¿É¡£Ê¹Óøù¤³§µÄËùÓдúÂë»á×Ô¶¯¸ü¸Ä¡£
Çåµ¥ 1 ÏÔʾ¹¤³§ÀàµÄÒ»¸öʾÁС£µÈʽµÄ·þÎñÆ÷¶Ë°üÀ¨Á½¸ö²¿·Ö£ºÊý¾Ý¿âºÍÒ»×é PHP Ò³Ã棬ÕâЩҳÃæÔÊÐíÄúÌí¼Ó·´À¡¡¢ÇëÇó·´À¡ÁÐ±í²¢»ñÈ¡ÓëÌض¨·´À¡Ïà¹ØµÄÎÄÕ¡£
Çåµ¥ 1. Factory1.php
<?php interface IUser { function getName(); } class User implements IUser { public function __construct( $id ) { } public function getName() { return "Jack"; } } class UserFactory { public static function Create( $id ) { return new User( $id ); } } $uo = UserFactory::Create( 1 ); echo( $uo->getName()."\n" ); ?>
IUser
½Ó¿Ú¶¨ÒåÓû§¶ÔÏóÓ¦Ö´ÐÐʲô²Ù×÷¡£IUser
µÄʵÏÖ³ÆΪ User
£¬UserFactory
¹¤³§ÀàÔò´´½¨ IUser
¶ÔÏ󡣴˹Øϵ¿ÉÒÔÓÃͼ 1 ÖÐµÄ UML ±íʾ¡£
Èç¹ûÄúʹÓà php
½âÊÍÆ÷ÔÚÃüÁîÐÐÉÏÔËÐд˴úÂ룬½«µÃµ½ÈçϽá¹û£º
% php factory1.php Jack % |
²âÊÔ´úÂë»áÏò¹¤³§ÇëÇó User
¶ÔÏ󣬲¢Êä³ö getName
·½·¨µÄ½á¹û¡£
ÓÐÒ»ÖÖ¹¤³§Ä£Ê½µÄ±äÌåʹÓù¤³§·½·¨¡£ÀàÖеÄÕâЩ¹«¹²¾²Ì¬·½·¨¹¹Ôì¸ÃÀàÐ͵ĶÔÏó¡£Èç¹û´´½¨´ËÀàÐ͵ĶÔÏó·Ç³£ÖØÒª£¬´Ë·½·¨·Ç³£ÓÐÓá£ÀýÈ磬¼ÙÉèÄúÐèÒªÏÈ ´´½¨¶ÔÏó£¬È»ºóÉèÖÃÐí¶àÊôÐÔ¡£´Ë°æ±¾µÄ¹¤³§Ä£Ê½»á½«¸Ã½ø³Ì·â×°ÔÚµ¥¸öλÖÃÖУ¬ÕâÑù£¬²»Óø´ÖƸ´Ôӵijõʼ»¯´úÂ룬Ҳ²»±Ø½«¸´ÖƺõĴúÂëÔÚÔÚ´úÂë¿âÖе½´¦Õ³ Ìù¡£
Çåµ¥ 2 ÏÔʾʹÓù¤³§·½·¨µÄÒ»¸öʾÀý¡£
Çåµ¥ 2. Factory2.php
<?php interface IUser { function getName(); } class User implements IUser { public static function Load( $id ) { return new User( $id ); } public static function Create( ) { return new User( null ); } public function __construct( $id ) { } public function getName() { return "Jack"; } } $uo = User::Load( 1 ); echo( $uo->getName()."\n" ); ?>Õâ¶Î´úÂëÒª¼òµ¥µÃ¶à¡£Ëü½öÓÐÒ»¸ö½Ó¿Ú
IUser
ºÍÒ»¸öʵÏÖ´Ë½Ó¿ÚµÄ User
Àà¡£User
ÀàÓÐÁ½¸ö´´½¨¶ÔÏóµÄ¾²Ì¬·½·¨¡£´Ë¹Øϵ¿ÉÓÃͼ 2 ÖÐµÄ UML ±íʾ¡£
ÔÚÃüÁîÐÐÖÐÔËÐнű¾²úÉúµÄ½á¹ûÓëÇåµ¥ 1 µÄ½á¹ûÏàͬ£¬ÈçÏÂËùʾ£º
% php factory2.php Jack % |
ÈçÉÏËùÊö£¬ÓÐʱ´ËÀàģʽÔÚ¹æÄ£½ÏСµÄ»·¾³ÖÐËƺõÓÐЩ´ó²ÄСÓᣲ»¹ý£¬×îºÃ»¹ÊÇѧϰÕâÖÖÔúʵµÄ±àÂëÐÎʽ£¬ÒÔ±ãÓ¦ÓÃÓÚÈÎÒâ¹æÄ£µÄÏîÄ¿ÖС£
ijЩӦÓóÌÐò×ÊÔ´ÊǶÀÕ¼µÄ£¬ÒòΪÓÐÇÒÖ»ÓÐÒ»¸ö´ËÀàÐ͵Ä×ÊÔ´¡£ÀýÈ磬ͨ¹ýÊý¾Ý¿â¾ä±úµ½Êý¾Ý¿âµÄÁ¬½ÓÊǶÀÕ¼µÄ¡£ÄúÏ£ÍûÔÚÓ¦ÓóÌÐòÖй²ÏíÊý¾Ý¿â¾ä±ú£¬ÒòΪÔÚ±£³ÖÁ¬½Ó´ò¿ª»ò¹Ø±Õʱ£¬ËüÊÇÒ»ÖÖ¿ªÏú£¬ÔÚ»ñÈ¡µ¥¸öÒ³ÃæµÄ¹ý³ÌÖиüÊÇÈç´Ë¡£
µ¥ÔªËØģʽ¿ÉÒÔÂú×ã´ËÒªÇó¡£Èç¹ûÓ¦ÓóÌÐòÿ´Î°üº¬ÇÒ½ö°üº¬Ò»¸ö¶ÔÏó£¬ÄÇôÕâ¸ö¶ÔÏó¾ÍÊÇÒ»¸öµ¥ÔªËØ£¨Singleton£©¡£
ÍƼöÐÅÏ¢
- ¡¾ÊÓƵ²¥·Å¡¿JplayerÊÓƵ²¥·ÅÆ÷µÄʹÓÃ
- memcacheÄÚ´æÔÀí
- Memcache¼¼Êõ·ÖÏí£º½éÉÜ¡¢Ê¹Óᢴ洢¡¢Ëã·¨¡¢ÓÅ»¯....
- php³£ÓÃÕýÔò±í´ïʽ
- phpÐÔÄܼà²âÄ£¿éXHProf
- ÈÃCI¿ò¼ÜÖ§³Öservice²ã
- ʹÓÃPHPÉú³É´øLOGOµÄ¸öÐÔ»¯¶þάÂëͼÏñ
- ¹ØÓÚCodeIgniterÄã¿ÉÄܲ»ÖªµÀµÄ5¸ö֪ʶµã
- Memcache ºÁÃ뼶³¬Ê±¼°ÆäËû³£¼ûÎÊÌâ»ã×Ü
- [PHP±Ê¼Ç]PHPQueryÒ»¸ö´¦ÀíDOMµÄÀûÆ÷
ÈÈÃÅÐÅÏ¢
- nohup: redirecting stderr to stdou....
- ʹÓÃlog_formatΪNginx·þÎñÆ÷ÉèÖøüÏêϸµÄÈÕÖ¾¸ñʽ
- jquery easyUI--dataGrid-Json
- [Ô´´]·ÂGoogle Reader¡¢ÐÂÀË΢²©¡¢ÌÚѶ΢²©µ....
- ÀûÓÃKeepalived+mysql¹¹½¨¸ß¿ÉÓÃMySQLË«Ö÷×Ô¶....
- Nginx+keepalivedʵÏÖ¸ºÔؾùºâºÍË«»úÈȱ¸¸ß¿ÉÓÃ
- jqueryʵÏÖÒ³Ãæ¼ÓÔؽø¶ÈÌõ
- Rolling cURL: PHP²¢·¢×î¼Ñʵ¼ù
- codeigniter ·ÓÉÖÕ¼«ÓÅ»¯(url rewrite)
- linuxÏÂÉèÖÃsshÎÞÃÜÂëµÇ¼
×î½ü¸üÐÂ
- PHP»ñÈ¡Óû§µÄÕæʵIP£¬²¢ÅжÏÊÇ·ñÄÚÍøIP
- PHP ´íÎóÈÕÖ¾ error_log
- ÀûÓÃbigpipe»úÖÆʵÏÖÒ³ÃæÄ£¿éµÄÒì²½äÖȾ chunked¼¼Êõ
- php¿ØÖÆÎļþÏÂÔØËÙ¶È
- js + php ¶ÁÈ¡¡¢²¥·ÅÊÓƵÁ÷ ¼æÈÝfirefox£¬c....
- ¡¾ÊÓƵ²¥·Å¡¿JplayerÊÓƵ²¥·ÅÆ÷µÄʹÓÃ
- UNICODE Óë UTF-8 µÄ¹Øϵ
- memcacheÄÚ´æÔÀí
- Memcache¼¼Êõ·ÖÏí£º½éÉÜ¡¢Ê¹Óᢴ洢¡¢Ëã·¨¡¢ÓÅ»¯....
- phpʹÓÃmb_detect_encoding¼ì²â×Ö·û´®±àÂë
ÆÀÂÛ