³Ð½ÓÉÏÎĵÄPHP ÔÓ̸¡¶Öع¹-¸ÄÉƼÈÓдúÂëµÄÉè¼Æ¡·Ö® ÖØÐÂ×éÖ¯ÄãµÄº¯Êý¼ÌÐøÖع¹·½ÃæµÄÄÚÈÝ
˼άµ¼Í¼
½éÉÜ
³Ð½ÓÉÏÎĵÄPHP ÔÓ̸¡¶Öع¹-¸ÄÉƼÈÓдúÂëµÄÉè¼Æ¡·Ö® ÖØÐÂ×éÖ¯ÄãµÄº¯Êý¼ÌÐøÖع¹·½ÃæµÄÄÚÈÝ¡£
ÕâÕÂÖ÷ÒªÕë¶ÔÊý¾ÝµÄÖع¹¡£
1¡¢ÕùÂÛµÄÉùÒô¡ª¡ªÖ±½Ó·ÃÎÊField»¹ÊÇͨ¹ýº¯Êý£¨Accessor£©·ÃÎÊField
2.ÐÞ¸ÄArrayΪObject£ºµ±Äã¿´µ½Ò»¸öArrayºÜÏñÒ»¸öÊý¾Ý½á¹¹£¬Äã¿ÉÒÔʹÓÃReplace Array with Object£¬°ÑArray±ä³ÉÒ»¸ö¶ÔÏ󡣡ª¡ªÊý¾Ý½á¹¹¸üÇåÎú¡£
רҵÊõÓï
accessor£º·ÃÎÊÕߣ¬´æ´¢Æ÷¡ª¡ªÔÚ±¾ÎÄ·ÒëΪ¡°º¯Êý¡±
dumb:ÑÆ
domain class£ºÓÃÒÔ´¦ÀíÒµÎñÂß¼
presentation class:ÓÃÒÔ´¦Àí¡±Êý¾Ý±íÏÖÐÎʽ¡°
business logic£ºÒµÎñÂß¼
unidirectional£ºµ¥ÏòµÄ
bidirectional£ºË«ÏòµÄ
collection£ºÈº¼¯
Self Encapsulate Field
×´¿ö£ºÈç¹ûClientÖ±½Ó·ÃÎÊÖµÓò£¬»áÔì³ÉClientÓëÖµÓòÖ®¼äµÄñîºÏ¹ØϵÖð½¥±äµÃ±¿×¾£¬ÄÇôΪÕâ¸öÖµÓò½¨Á¢È¡Öµ/ÉèÖú¯Êý£¬²¢ÇÒÖ»ÒÔÕâЩº¯ÊýÀ´·ÃÎÊ¡£
¶¯»ú£º
¡¡¡¡¡°¼ä½Ó·ÃÎʱäÁ¿¡±£ºÖ§³Ö¸üÁé»îµÄÊý¾Ý»ñÈ¡·½Ê½£¬Èçlazy Initialization£¨Òâ˼ÊÇÖ»ÓÐÓõ½ÖµÊ±£¬²Å¶ÔËü½øÐгõʼ»¯¡££©
¡¡¡¡¡°Ö±½Ó·ÃÎʱäÁ¿¡±£º´úÂë±È½ÏÈÝÒ×ÔĶÁ£¬²»ÐèҪͣÏÂÀ´Ëµ£º¡°°¡£¬ÕâÖ»ÊǸöÈ¡Öµº¯Êý¡±¡£
Ñ¡Ôñ£º1¡¢´úÂë¹æ·¶£¬°´ÕÕÍŶÓÖдó¶àÊýÈ˵Ä×ö·¨È¥×ö¡£
¡¡¡¡¡¡¡¡¡¡2¡¢¸öÈ˱ȽÏϲ»¶¡°Ö±½Ó·ÃÎʱäÁ¿¡±£¬Ö±µ½ÕâÖÖ·½Ê½´øÀ´Â鷳Ϊֹ¡£
¡¡¡¡¡¡¡¡¡¡¡¡¡¡martin(×÷Õß)µÄÀý×Ó£ºÄãÏë»ñÈ¡superclassÖеÄfield£¬È´ÓÖÏëÔÚsubclassÖн«¸Ãfield¸ÄΪ¼ÆËãºóµÄÖµ£¬Õâ¾Í×î¸ÃʹÓÃSelf Encapsulate Field¡£
ÎÒ×Ô¼ºµÄÀý×Ó£ºÎÒÒ»°ã»á°ÑfieldÉèÖóÉprivate£¬Èç¹ûÍⲿ±äÁ¿£¬ÐèÒªÓõ½´ËfieldµÄʱºò£¬ÎҾͻáÓÃSelf Encapsulate Field¡£»òÕßfieldµÄÖµÓб仯µÄʱºò£¬ÓÃSelf Encapsulate Field¡£
Replace Data Value with Object
×´¿ö£ºÈç¹ûÄãµÄij¸ö»ù±¾ÀàÐ͵Äfield£¬ÐèÒª¶îÍâµÄÊý¾ÝºÍÐÐΪ£¬ÄÇô½«´Ëfield±ä³É¶ÔÏó¡£
¶¯»ú£º
¿ª·¢³õÆÚ£¬ÎÒÃÇÒ²Ðí»áʹÓûù±¾Êý¾ÝÀàÐͱíʾ¼òµ¥µÄÐÐΪ¡£ÀýÈ磺Äã¿ÉÄÜ»áÓÃÒ»¸ö×Ö·û´®±íʾµç»°ºÅÂ룬µ«ÊÇËæºó¿ÉÄÜ»á³öÏֵ绰ºÅÂëµÄ¡°¸ñʽ»¯¡°£¬¡±ÑéÖ¤¡°£¬¡±³éÈ¡ÇøºÅ¡°Ö®ÀàµÄÌØÊâÐÐΪ¡£¡ª¡ªÕâʱºòÎÒÃǾÍÐèÒªÒ»¸öÐÂÀà¡£
Replace Array with Object
×´¿ö£ºÄãÓÐÒ»¸öÊý×飬Êý×éÖеÄÔªËظ÷×Ô´ú±í²»Í¬µÄ¶«Î÷£¬ÄÇôÒÔ¶ÔÏóÌæ»»Êý×飬¶ÔÓÚÊý×éÖеÄÿ¸öÔªËØ£¬ÒÔÒ»¸öÖµÓò±íʾ֮¡£
¶¯»ú£º
Êý×é³£ÓÃÓÚÒ»×éÏàËƶÔÏó¡£Èç¹ûÊý×éÖеÄÔªËز»Í¬£¬ºÜÄÑÃ÷°×Êý×éÖеĵÚÒ»¸öÔªËØÊÇÈËÃûÕâÑùµÄÔ¼¶¨¡£¶ÔÏó¾Í²»Í¬ÁË£¬¿ÉÒÔͨ¹ýÖµÓòÃû³ÆºÍº¯ÊýÃû³Æ´«´ïÕâÑùµÄÐÅÏ¢¡£¡ª¡ªÕâÑùÎÞÐëËÀ¼Ç£¬ÎÞÐë×¢ÊÍ¡£
Encapsulate Field
×´¿ö£ºÈç¹ûÄãµÄclassÖÐÓÐÒ»¸öpublicÖµÓò£¬ÄÇô½«ËüÉùÃ÷Ϊpirvate£¬²¢ÌṩÏàÓ¦µÄ·ÃÎʺ¯Êý¡£
¶¯»ú£º
ÃæÏò¶ÔÏóµÄÔÔòÖ®Ò»¾ÍÊÇ·â×°£¨Encapsulate£©»òÕß³ÆΪ¡±Êý¾ÝÒþ²Ø¡°¡£°´ÕÕ´ËԲ⣬Äã¾ø²»Ó¦¸Ã°ÑÊý¾ÝÉùÃ÷Ϊpublic¡£
¡¡¡¡¡ª¡ªpublic Êý¾Ý±»¿´³ÉÊÇÒ»ÖÖ²»ºÃµÄ×ö·¨¡£
¡¡¡¡¡ª¡ªÈç¹û·â×°ÁË£¬´úÂëµÄÐ޸ľͻá±È½Ï¼òµ¥£¬ÒòΪ¶¼¼¯ÖÐÔÚÒ»¸öµØ·½¡£
Ò»¸öº¯Êý³ýÁË·ÃÎʺ¯Êý(getting/setting)Í⣬²»ÌṩÆäËûÐÐΪ£¬ËüÖÕ¾¿Ö»ÊÇÒ»¸ödumb class£¨ÑÆÀࣩ¡£ÕâÀàclass²»ÄÜ»ñµÃ¶ÔÏó¼¼ÊõµÄÓÅÊÆ¡£¡ª¡ª½â¾öÑÆÀàµÄ·½·¨ÊÇMove MethodÇá¿ìµÄ½«ËüÃÇÒƵ½Ð¶ÔÏóÈ¥¡£
conclusion
ÎÒÏ£ÍûÄÜ°ÑÎÒÀí½âµÄ¶«Î÷Óë´ó¼Ò·ÖÏí£¬»¶Ó´ó¼ÒÌá³ö±¦¹óÒâ¼û¡£ |