±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcocoachina£¬±¾ÎÄÖ÷Òª½éÉÜÁË×÷ÕßÔÚÏîÄ¿ÖØ¹¹¹ý³ÌÖеĵÄһЩ×ܽáºÍ·ÖÏí¡£ |
|
ÏîÄ¿¼ò½éºÍMVPÄ£Ê½ÖØ¹¹
ÏîÄ¿¼ò½é
Ê×Ïȼòµ¥½éÉÜÒ»ÏÂÏîÄ¿Çé¿ö¡£ÎÒÃÇÔÓÐÏîÄ¿µÄ¼Ü¹¹ÊDZȽϱê×¼µÄMVCģʽ£¬Ò²ÊÇÆ»¹û¹Ù·½ÍƼöµÄ¼Ü¹¹Ä£Ê½¡£Model²ãÓÃÀ´±íʾʵÌåÀ࣬View²ã¸ºÔð½çÃæÕ¹Ê¾ºÍ´«µÝUIʼþ£¬Controller²ã¸ºÔð´ó²¿·ÖµÄÒµÎñÂß¼¡£³ý´ËÖ®Í⣬¶ÔÒ»²¿·Ö¹«¹²µÄ¿É¸´ÓõÄÂß¼£¬ÎÒÃdzéÏó³öService²ã£¬Ìṩ¸øControllerʹÓã¬ÁíÍâÍøÂç²ãÒ²¶ÀÁ¢³öÀ´¡£ÏÂͼ±È½ÏÇå³þµØÕ¹Ê¾ÁËÕûÌå¼Ü¹¹

ÕûÌå¼Ü¹¹
MVCģʽµÄÎÊÌâ
MVC¼Ü¹¹×÷Ϊƻ¹û¹Ù·½ÍƼöµÄ¼Ü¹¹Ä£Ê½£¬°ÑÊý¾ÝModelºÍÕ¹ÏÖViewͨ¹ýController²ã¸ôÀ뿪£¬ÔÚÏîÄ¿¹æÄ£½ÏСµÄʱºòÊÇÒ»¸ö²»´íµÄÑ¡Ôñ¡£Ëæ×ÅÏîÄ¿¸´ÔÓÐÔµÄÌá¸ß£¬ÎÒÃÇÒ²½¥½¥¸Ð¾õµ½MVCģʽµÄ±×¶Ë£¬Ö÷ÒªÌåÏÖÔÚÏÂÃæ¼¸¸ö·½Ãæ
Controller²ãÖ°Ôð¹ý¶à£¬ModelºÍView²ãÌ«¼òµ¥
Controller´¦ÀíÒµÎñÂß¼£¬´¦ÀíUI¸üУ¬´¦ÀíUIʼþ£¬Í¬²½Model²ã£¬ÎÒÃǼ¸ºõËùÓеĴúÂ붼дÔÚÁËController²ã¡£Éè¼ÆÄ£Ê½ÀïÓе¥Ò»Ä£Ê½ÔÔò£¬Äã¿´ÕâÀïµÄController²ãÒѾÖÁÉÙÓÐËÄÖÖÖ°ÔðÁË¡£
ÒµÎñÂß¼ºÍUI»ìÔÓÔÚÒ»Æð£¬ÄÑÒÔ±àдµ¥Ôª²âÊÔ
ÕâÒ»µãÒ»·½ÃæÊÇÒòΪCocoa¿ò¼ÜÀïµÄController²ã£¬¾ÍÊÇÎÒÃÇ×îÊìϤµÄUIViewControllerºÍViewÊÇÌìÈ»ñîºÏµÄ£¬ºÜ¶àviewµÄÉúÃüÖÜÆÚ·½·¨ÈçviewWillAppear¶¼´æÔÚÓÚVC£¬ÁíÒ»·½ÃæÎÒÃǺܶàʱºòҲϰ¹ßÓÚ°ÑUI²Ù×÷ÉõÖÁ³õʼ»¯²Ù×÷·ÅÔÚVCÀµ¼ÖÂUIºÍÒµÎñÂß¼»ìÔÓÔÚÒ»Æð¡£µ±ÄãÏë¶ÔÒµÎñÂß¼±àдµ¥Ôª²âÊÔµÄʱºò£¬¿´×ÅÒµÎñÂß¼´úÂëÀï»ìÔÓµÄUI²Ù×÷£¬¾ÍÖªµÀʲô½Ð¾Ù²½Î¬¼è¡ª¡ªÊý¾Ý¿ÉÒÔMock£¬UIÊDz»¿ÉÄܱ»MockµÄ¡£
ÒµÎñÂß¼´úÂë´óÁ¿´æÔÚÓÚController²ã£¬Î¬»¤À§ÄÑ
µ±Ò»¸ö½çÃæ¹¦ÄܱȽϸ´ÔÓµÄʱºò£¬ÎÒÃÇËùÓеÄÂß¼´úÂë¶¼»á¶Ñ»ýÔÚControllerÖУ¬±ÈÈçÎÒÃÇÔÓеÄWebViewControllerµÄ´úÂë¾Í¶à´ï5000ÐУ¬ÔÚÕâÖÖÇé¿öÏÂά»¤´úÂë¼òÖ±ÊÇÈçÂı¡±ù¡£
MVPģʽµÄÖØ¹¹
¶ÔÓÚController²ã¹ýÓÚÓ·Ö×µÄÎÊÌ⣬MVPģʽÔòÄܽϺõؽâ¾öÕâ¸öÎÊÌ⡪¡ª¼ÈÈ»UIViewControllerºÍUIViewÊÇñîºÏµÄ£¬Ë÷ÐÔ°ÑÕâÁ½Õß¶¼¹éΪView²ã£¬ÒµÎñÂß¼Ôò¶ÀÁ¢´æÔÚÓÚPresenter²ã£¬Model²ã±£³Ö²»±ä¡£ÏÂͼ±È½ÏÇå³ýµÃչʾÁËMVPģʽµÄ½á¹¹

MVPģʽ¼ò½é
ÎÒÃÇÀ´¿´Ò»ÏÂMVPģʽÄÜ·ñ½â¾öMVCģʽ´æÔÚµÄÎÊÌâ
Controller²ãÖ°Ôð¹ý¶à£¬ModelºÍView²ãÌ«¼òµ¥
ÔÚMVPģʽÏ£¬Controller²ãºÍView²ãÒѾºÏ²¢ÎªView²ã£¬×¨ÃŸºÔð´¦ÀíUI¸üкÍʼþ´«µÝ£¬Model²ã»¹ÊÇ×÷ΪʵÌåÀà¡£Ô±¾Ð´ÔÚViewController²ãµÄÒµÎñÂß¼ÒÑ¾Ç¨ÒÆµ½PresenterÖС£MVPģʽ½ÏºÃµØ½â¾öÁËController²ãÖ°Ôð¹ý¶àµÄÎÊÌâ¡£
ÒµÎñÂß¼ºÍUI»ìÔÓÔÚÒ»Æð£¬ÄÑÒÔ±àдµ¥Ôª²âÊÔ
Presenter²ãÖ÷Òª´¦ÀíÒµÎñÂß¼£¬ViewController²ãʵÏÖPresenterÌṩµÄ½Ó¿Ú£¬Presenterͨ¹ý½Ó¿ÚÈ¥¸üÐÂView£¬ÕâÑù¾ÍʵÏÖÁËÒµÎñÂß¼ºÍUI½âñî¡£Èç¹ûÎÒÃÇÒª±àдµ¥Ôª²âÊԵϰ£¬Ö»ÐèÒªMockÒ»¸ö¶ÔÏóʵÏÖPresenterÌṩµÄ½Ó¿Ú¾ÍºÃÁË¡£MVPģʽ½ÏºÃµØ½â¾öÁËUIºÍÂß¼µÄ½âñî¡£
ÒµÎñÂß¼´úÂë´óÁ¿´æÔÚÓÚController²ã£¬Î¬»¤À§ÄÑ
ͨ¹ý°ÑÒµÎñÂß¼Ç¨ÒÆµ½Presenter²ã£¬Controller²ãµÄÀ§¾³ËƺõµÃµ½Á˽â¾ö£¬µ«ÊÇÈç¹ûij¸öÐèÇóÂß¼½ÏΪ¸´ÔÓ£¬µ¥´¿µÄ°ÑÒµÎñÂß¼Ç¨ÒÆ½â¾ö²»Á˸ù±¾µÄÎÊÌ⣬Presenter²ãÒ²»á´æÔÚ´óÁ¿ÒµÎñÂß¼´úÂ룬ά»¤À§ÄÑ¡£Õâ¸öÎÊÌ⣬ÎÒÃÇÏÂÃæ»áÌÖÂÛÈçºÎ½â¾ö¡£
MVCģʽ¸Ä½ø¡ª¡ªRouterģʽ
ÕâÀïÖ÷ÒªÊÇ¿¼ÂǽçÃæ¼äÌø×ªµÄ´úÂëÈçºÎÖØ¹¹

Routerģʽ
ʵÀý·ÖÎö
Ç°ÃæÎÒÃÇÌáµ½£¬MVPģʽËäÈ»Äܽâ¾öÐí¶àMVCģʽÏ´æÔÚµÄÎÊÌ⣬µ«¶ÔÓڱȽϸ´ÔÓµÄÐèÇ󣬻¹ÊÇ»á´æÔÚÂß¼¹ýÓÚ¸´ÔÓ£¬Presenter²ãÒ²³öÏÖÄÑÒÔά»¤µÄÎÊÌâ¡£ÏÂÃæÎÒÃǾÍͨ¹ýÒ»¸öʵ¼ÊµÄÀý×Ó£¬À´¿´¿´Ãæ¶Ô¸´ÔÓµÄÒµÎñÂß¼£¬ÎÒÃÇÓ¦¸ÃÈçºÎÈ¥Éè¼ÆºÍʵÏÖ¡£
ºÜ¶à¸´ÔÓµÄÐèÇó£¬ÔÚ×î³õ¶¼ÊÇ´ÓÒ»¸ö¼òµ¥µÄ³¡¾°£¬Ò»²½²½ÍùÉÏÔö¼Ó¹¦ÄÜ¡£ÔÚÕâ¸ö¹ý³ÌÖУ¬Èç¹û²»³ÖÐøµÄ½øÐÐÓÅ»¯ºÍÖØ¹¹£¬µ½×îºó¾Í³ÉÁËËùνµÄ"Ö»ÓÐÉϵÛÄÜ¿´¶®µÄ´úÂë"¡£ËµÁËÕâô¶à£¬½øÈëÕýÌ⣬À´¿´Õâ¸öÐèÇó¡£
V1.0 µ¥ÎļþÉÏ´«
ʵÏÖÒ»¸ö¼òµ¥µÄµ¥ÎļþÉÏ´«£¬ÎļþµÄË÷Òý´æ´¢ÔÚÊý¾Ý¿âÖУ¬Îļþ´æ´¢ÔÚAppµÄɳÏäÀïÃæ¡£Õâ¸öÓ¦¸Ã¶ÔÓÚÓоÑéµÄ¿Í»§¶Ë¿ª·¢ÕßÀ´ËµÊÇС²ËÒ»µú£¬±È½Ï¼òµ¥Ò²ÈÝÒ×ʵÏÖ¡£ÎÒÃÇ¿ÉÒÔ°ÑÕâ¸öÐèÇó´óÖ²ð·Ö³ÉÒÔϼ¸¸ö×ÓÐèÇó
1.³õʼ»¯ÉÏ´«View
2.¸üÐÂÉÏ´«View
3.µã»÷ÉÏ´«°´Å¥Ê¼þ
4.Êý¾Ý¿âÖлñÈ¡ÉÏ´«Ä£ÐÍ
5.·¢ÆðHTTPÇëÇóÉÏ´«Îļþ
6.¼ì²éÍøÂç״̬
ÒÔÉϼ¸ÏîÈç¹ûʹÓô«Í³µÄMVCģʽ£¬ÊµÏÖÆðÀ´ÈçÏÂͼËùʾ

MVC
ÎÒÃÇ¿ÉÒÔ¿´µ½ÉÏÊöÐèÇó»ù±¾¶¼Ö±½ÓÔÚUploadViewControllerÖÐʵÏÖ£¬Ä¿Ç°ÐèÇó»¹ÊDZȽϼòµ¥µÄÇéÐÎÏÂÃæ£¬»¹ÊÇÃãÇ¿Äܹ»½ÓÊÜ£¬Ò²²»ÐèÒª¸ü¶àµÄ˼¿¼¡£Èç¹ûʹÓÃMVPµÄģʽ½øÐÐÓÅ»¯£¬ÈçÏÂͼËùʾ

MVP.png
ÏÖÔÚUploadPresenter¸ºÔð´¦ÀíÉÏ´«Âß¼ÁË£¬¶øUploadViewControllerרעÓÚUI¸üкÍʼþ´«µÝ£¬ÕûÌåµÄ½á¹¹¸ü¼ÓÇåÎú£¬ÒÔºóά»¤´úÂëÒ²»á±È½Ï·½±ã¡£
V2.0 ¶àÎļþÉÏ´«
ÐèÇóÀ´ÁË£¡ÐèÒªÔÚÔÀ´µÄ»ù´¡ÉÏÖ§³Ö¶àÎļþÉÏ´«£¬Òâζ×ÅÎÒÃǶàÁËÒ»¸ö×ÓÐèÇó
7.ά»¤ÉÏ´«Ä£ÐͶÓÁÐ
ºÜÏÔÈ»£¬ÎÒÃÇÐèÒªÔÚUploadPresenterÖÐÔö¼ÓÒ»¸öά»¤ÉÏ´«¶ÓÁеŦÄÜ£¬×î³õÎÒҲȷʵÊÇÕâÑùʵÏֵ쬵«ÊÇÓÉÓÚÎļþÉÏ´«ÐèÒª¼àÌýµÄʼþ±È½Ï¶à£¬»Øµ÷Ò²±È½ÏƵ·±£¬Ö±½ÓÔÚPresenterÖмÌÐøÐ´ÕâÑùµÄÂß¼´úÂ룬ÒѾ³É±¶Ôö¼ÓÁË´úÂëµÄ¸´ÔÓÐÔ¡£
ËùÒÔ¾¹ýÒ»·¬Ë¼¿¼£¬ÎÒ¿¼ÂǰÑÎļþÉÏ´«Õⲿ·ÖµÄÂß¼µ¥¶ÀÌáÈ¡³öÒ»²ãFileUploader£¬¶øUploadPresenterÖ»¸ºÔðά»¤FileUploaderµÄ¶ÓÁÐÒÔ¼°¼ì²éÍøÂç״̬¡£¾ßÌåµÄʵÏÖÈçÏÂËùʾ¡£

MVP2.png
ÎÒÃÇ¿ÉÒÔ¿´µ½£¬·Ö²ãÖ®ºóµÄ½á¹¹ÓÖ¸ü¼ÓÇåÎúÁË£¬Ã¿Ò»²ãµÄÖ°Ô𶼱Ƚϵ¥Ò»£¬Ä¿Ç°¿´ÆðÀ´Ò»ÇÐOK£¡
V3.0 ¶àÀ´Ô´ÉÏ´«
ÔÀ´ÎÒÃǵÄÉÏ´«ÎļþµÄÀ´Ô´ÊÇ´æÔÚÓÚAppɳÏäÀïµÄ£¬ÎÒÃÇͨ¹ýÊý¾Ý¿â²éѯ¿ÉÒÔÕÒµ½Õâ¸öÎļþµÄË÷ÒýºÍ·¾¶£¬½ø¶ø»ñÈ¡µ½Õâ¸öÎļþ½øÐÐÉÏ´«¡£ÏÖÔÚÍò¶ñµÄÐèÇóÓÖÀ´ÁË£¬ÐèÒªÖ§³ÖÉÏ´«ÏµÍ³Ïà²áÖлñÈ¡µÄͼƬ/ÊÓÆµ¡£
8.Ö§³ÖϵͳÏà²áºÍAppɳÏäÖлñÈ¡Îļþ
µ½ÕâÀï¿ÉÄÜÓÐЩ¶ÁÕßÒѾÓеãÍ·´óÁË£¬Èç¹ûûÓÐ×Ðϸ˼¿¼£¬ºÜ¿ÉÄÜ´ÓÕâÀï¾Í×ßÏòÁË´úÂëÖÊÁ¿±ÀÀ£µÄµÀ·¡£
Õâ¸öʱºò£¬ÎÒÃǾÍҪ˼¿¼£¬ËûÃÇÊǶàÀ´Ô´£¬µ«ÊǶÔÓÚFileUploaderÀ´Ëµ£¬ËüÆäʵ²»¹ØÐÄÄ£Ð͵ÄÀ´Ô´£¬ËüÖ»ÐèÒª»ñÈ¡µ½Ä£Ð͵Ķþ½øÖÆÁ÷¡£ÓÚÊÇ£¬ÎÒÃÇ¿ÉÒÔ³éÏó³öÒ»¸öBaseModel£¬Ìṩһ¸östreamÖ»¶ÁÊôÐÔ£¬Á½ÖÖÀ´Ô´·Ö±ð¼Ì³ÐBaseModel£¬¸÷×ÔÖØÔØstreamÖ»¶ÁÊôÐÔ£¬ÊµÏÖ×Ô¼ºµÄ¹¹ÔìÎļþstreamµÄ·½·¨¡£¶ÔÓÚFileUploaderÀ´Ëµ£¬ËüÖ»³ÖÓÐBaseModel¼´¿É£¬Õâ¾ÍÊǼ̳кͶà̬µÄÒ»¸öµäÐ͵ÄʹÓó¡¾°¡£
Èç¹ûºóÐø»¹Óиü¶àÀ´Ô´µÄÎļþ£¬±ÈÈçÍøÂçÎļþ£¨ÏÈÏÂÔØÔÙÉÏ´«£¿£©,Ò²Ö»ÐèÒª¼ÌÐø¼Ì³ÐBaseModel£¬ÖØÔØstream¼´¿É£¬¶ÔÓÚFileUploaderºÍËüµÄËùÓÐÉϲãÀ´Ëµ£¬Ò»Çж¼ÊÇ͸Ã÷µÄ£¬ÎÞÐè½øÐÐÐ޸ġ£¾¹ýÕâÑùµÄÉè¼Æ£¬ÎÒÃǵĴúÂëµÄ¿Éά»¤ÐԺͿÉÀ©Õ¹ÐÔÓÖºÃÁË¡£ÏÂÃæÊǼܹ¹Í¼¡£

MVP3.png
V4.0 ¶à·½Ê½ÉÏ´«
ÔÚHTTPÎļþÉÏ´«ÖУ¬ÎÒÃÇ¿ÉÒÔÖ±½ÓÉÏ´«ÎļþµÄ¶þ½øÖÆÁ÷£¬ÕâÖÖ¾ÍÐèÒª·þÎñ¶Ë×öÌØ¶¨µÄÖ§³Ö¡£µ«¸üΪ³£ÓúÍÖ§³Ö¹ã·ºµÄ×ö·¨ÊÇʹÓÃHTTP±íµ¥Îļþ´«Ê䣬¼´×é×°HTTPÇëÇóµÄbodyʱ²ÉÓÃmultipart/form-dataµÄ±ê×¼×é×°£¬´«ÊäÊý¾Ý¡£ÓÚÊÇ£¬ÎÒÃÇÓÖ¶àÁËÒ»¸öÐèÇó£º
9.Ö§³Ö±íµ¥´«ÊäºÍÁ÷´«Êä
˼·ºÍ¸Õ²ÅµÄ¶àÀ´Ô´ÉÏ´«²î²»¶à£¬ÎÒÃǰÑÉÏÃæµÄÁ½ÖÖÀ´Ô´µÄÄ£ÐÍ£¬¼´FSBaseMºÍABaseM³éÏóΪ¸¸À࣬¸¸ÀຬÓи÷×ÔµÄÎļþ¶þ½øÖÆÊý¾ÝµÄ³éÏó£¬×ÓÀà·Ö±ðʵÏÖ¶þ½øÖÆÖ±½Ó×é×°Á÷£¬ºÍ°´multipart/form-data¸ñʽ×é×°Á÷£¬ÊµÏÖÈçÏÂͼ¡£

MVP4.png
V5.0 Ö§³ÖFTP/SocketÉÏ´«
¸Õ²ÅÎÒÃǵÄÎļþÉÏ´«£¬µ×²ãµÄÐÒéÊÇ»ùÓÚHttp£¬´ËʱÎÒÃÇÐèÒªÖ§³ÖFTP/SocketÐÒéµÄ´«Ê䣬Ӧ¸ÃÔõô°ì£¿
10.Ö§³ÖHTTP/FTP/Socket
¾¹ýÉÏÃæµÄ˼¿¼£¬ÏàÐÅÄãÒ»¶¨ÖªµÀ¸ÃÔõô×öÁË¡£ÕâÀïÁô¸ö˼¿¼£¬´ð°¸Çë´ÁÕâÀïMVP_V5¼Ü¹¹
¶Ô±È
×îºó£¬ÎÒÃǰÑĿǰµÄÐèÇóÈ«¶¼ÕûÀíÒ»ÏÂ
³õʼ»¯ÉÏ´«View
1.¸üÐÂÉÏ´«View
2.µã»÷ÉÏ´«°´Å¥Ê¼þ
3.Êý¾Ý¿âÖлñÈ¡ÉÏ´«Ä£ÐÍ
4.·¢ÆðHTTPÇëÇóÉÏ´«Îļþ
5.¼ì²éÍøÂç״̬
6.ά»¤ÉÏ´«Ä£ÐͶÓÁÐ
7.Ö§³ÖϵͳÏà²áºÍAppɳÏäÖлñÈ¡Îļþ
8.Ö§³Ö±íµ¥´«ÊäºÍÁ÷´«Êä
9.Ö§³ÖHTTP/FTP/Socket
ÎÒÃÇ¿´¿´£¬Èç¹û·Ö±ð²ÉÓÃMVC¡¢MVP_V1¡¢MVP_V2¡¢MVP_V3¡¢MVP_V4¡¢MVP_V5£¬À´ÊµÏÖĿǰµÄÊ®¸öÐèÇó£¬ÎÒÃǵĴúÂë´óÖ»á·Ö²¼ÔÚÄļ¸²ã¡£

ÓÅ»¯ºóµÄ¼Ü¹¹Ä£Ê½Ö®¼äµÄ±È½Ï
ÊëÓÅÊëÁÓһĿÁËÈ»¡£Èç¹û²ÉÓÃ×îÔʼµÄMVCģʽµÄ»°£¬±£ÊعÀ¼ÆViewController´úÂëÁ¿ÖÁÉÙ3KÐÐÒÔÉÏ¡£
×ܽá
ÔËÓÃMVPµÄÉè¼ÆÄ£Ê½£¬Âß¼ºÍUI²Ù×÷½âñî
·Ö²ãģʽ£¬ÉϲãÓµÓÐϲ㣬ϲãͨ¹ý½Ó¿ÚÓëÉϲãͨÐÅ£¬´ïµ½½âñî¡£
ÀûÓü̳кͶà̬£¬ÆÁ±Îµ×²ãʵÏÖµÄϸ½Ú£¬´ïµ½Ö°Ôð·ÖÀëºÍ¸ßÀ©Õ¹ÐÔ
´úÂëÓÅ»¯ºÍÖØ¹¹µÄ¼¼ÇÉ
ÔÚÕâ´ÎµÄÏîÄ¿ÖØ¹¹ÖУ¬ÎÒÒ²×ܽáÁËÒ»Ð©ÖØ¹¹·½ÃæµÄ¼¼ÇɺÍÌùÊ¿£¬Ï£ÍûÄܰïÖúµ½Ï뿪ʼ½øÐдúÂëÖØ¹¹µÄͬѧ
ʲ»¹ýÈý
´ó¶ÎÖØ¸´µÄ´úÂë³öÏÖÁËÈý´Î»òÒÔÉÏ
¡ª¡ªÌáÈ¡³ÉÒ»¸ö¹«¹²µÄ·½·¨
ÕâÒ»µãÊÇ×î³£¼ûÒ²×îÈÝÒ××öµ½µÄ£¬Ö»ÒªÔÚÆ½Ê±µÄ±àÂë¹ý³ÌÖÐÑø³ÉÕâÖÖϰ¹ß£¬¶ÔÓÚ³öÏÖ¹ýÈý´ÎÒÔÉÏÖØ¸´´úÂë¶Î£¬ÌáÈ¡³ÉÒ»¸ö¹«¹²·½·¨¡£
Ò»¸öÀàµÄÖ°ÔðÓÐÈýÖÖ»òÒÔÉÏ
¡ª¡ªÍ¨¹ýºÏÀí·Ö²ãµÄ·½Ê½£¬¼õÉÙÖ°Ôð
ÕâÒ»µãÔÚÉÏÃæµÄÀý×ÓÖÐÒѾ²ûÊöµØ±È½ÏÇå³þÁË£¬Í¨¹ýÖ°ÔðµÄ·Ö²ã£¬Éϲã³ÖÓÐϲ㣬ϲãͨ¹ý½Ó¿ÚÓëÉϲãͨѶ¡£ÆäʵÕâÒ²ÊÇMVPģʽµÄ±¾ÖÊ¡£
ͬÀàµÄif/else³öÏÖÁËÈý´Î»òÒÔÉÏ
¡ª¡ª¿¼ÂÇʹÓóéÏóÀàºÍ¶à̬´úÌæif/else
Èç¹ûÏàͬµÄif/elseÅжÏÔÚÄãµÄ´úÂëÖгöÏÖÁ˺ܶà´ÎµÄ»°£¬ÔòÓ¦¸Ã¿¼ÂÇÉè¼ÆÒ»¸ö³éÏóÀàÈ¥Ìæ´úÕâЩÅжϡ£ÕâÀï¿ÉÄÜÓеãÄÑÒÔÀí½â£¬¾Ù¸öÀý×Ӿͺö®ºÜ¶à
±ÈÈ磬ÏÖÔÚÎÒÃÇÓÐÒ»¸öË®¹ûÀ࣬ÓÐÈýÖÖË®¹û£¬Ë®¹ûÓÐÑÕÉ«¡¢¼ÛÇ®ºÍÆ·ÖÖ
class Fruit
{
var name:String = ""
func getColor() -> UIColor? { if name == "apple"
{ return UIColor.red
} else if name == "banana" { return
UIColor.yellow
} else if name == "orange" { return
UIColor.orange
} return nil
}
func getPrice() -> Float? { if name == "apple"
{ return 10
} else if name == "banana" { return
20
} else if name == "orange" { return
30
} return nil
}
func getType() -> String? { if name == "apple"
{ return "ºì¸»Ê¿"
} else if name == "banana" { return
"°Å½¶"
} else if name == "orange" { return
"»ÊµÛ"
} return nil
}
} |
ÕâÀïµÄ¶ÔÃû³ÆnameµÄÏàͬµÄif/elseÅжϳöÏÖÁËÈý´Î£¬Èç¹û´ËʱÎÒÃǶàÁËÒ»ÖÖË®¹ûÀ棬ÎÒÃǵÃÐÞ¸ÄÉÏÊöËùÓеÄif/elseÅжϣ¬ÕâÑù¾Í»á·Ç³£ÄÑά»¤¡£
ÕâÖÖ³¡¾°ÎÒÃÇ¿ÉÒÔ¿¼ÂdzéÏó³öÒ»¸öFruitµÄ³éÏóÀà/½Ó¿Ú/ÐÒ飬ͨ¹ýʵÏÖË®¹ûÀà/½Ó¿Ú/ÐÒéµÄ·½Ê½£¬´ËʱÈç¹û¶àÁËÒ»ÖÖË®¹û£¬ÈÃÕâÖÖË®¹û¼ÌÐøÊµÏÖFruitÐÒé¾ÍÐУ¬ÕâÑùÎÒÃǾÍͨ¹ýÐÂÔöµÄ·½Ê½Ìæ´úÐ޸ģ¬Ìá¸ßÁË´úÂëµÄ¿Éά»¤ÐÔ¡£
protocol Fruit
{
func getPrice() -> Float?
func getType() -> String?
func getColor() -> UIColor?
var name:String { get }
}class Apple:Fruit {
var name:String = "apple"
func getColor() -> UIColor? { return UIColor.red
}
func getPrice() -> Float? { return 10
}
func getType() -> String? { return "ºì¸»Ê¿"
}
}class Banana:Fruit {
var name:String = "banana"
func getColor() -> UIColor? { return UIColor.yellow
}
func getPrice() -> Float? { return 20
}
func getType() -> String? { return "°Å½¶"
}
}class Orange:Fruit {
var name:String = "orange"
func getColor() -> UIColor? { return UIColor.orange
}
func getPrice() -> Float? { return 30
}
func getType() -> String? { return "»ÊµÛ¸Ì"
}
} |
ºÏÀí·Ö²ã
×ÝÏò·Ö²ã¡ª¡ª²ã¼¶Ö®¼äÓйØÁª
Éϲã³ÖÓÐϲ㣬ϲãͨ¹ý½Ó¿ÚÓëÉϲãͨÐÅ¡£ÕâÀïΪʲô²»ÈÃϲãÒ²³ÖÓÐÉϲãÄØ£¿Ö÷Òª»¹ÊÇΪÁËÄܹ»½âñϲãÉè¼ÆµÄÄ¿µÄÊÇΪÉϲã·þÎñµÄ£¬Ëü²»Ó¦¸ÃÒÀÀµÉϲ㡣ÕâÖÖÉè¼ÆÄ£Ê½ÔÚ¼ÆËã»ú¿ÆÑ§ÖÐÊǺܳ£¼ûµÄ£¬±ÈÈç¼ÆËã»úÍøÂçÖеÄÍøÂç·Ö²ãÉè¼Æ¡£
ºáÏò·Ö²ã¡ª¡ª²ã¼¶Ö®¼äÎÞ¹ØÁª
ÊÊÓÃÓÚ¹¦ÄÜÏà¶Ô¶ÀÁ¢µÄÄ£¿é£¬¼òµ¥»®·Ö¼´¿É¡£ÎÒÃǵÄiOSÏîÄ¿µÄÊ×Ò³¾ÍÊÇÓɺü¸¸ö²¿·Ö×é³É£¬Õâ¸ö²¿·ÖÖ®¼äÎÞÌ«¶àµÄ¹ØÁª£¬ÎÒÃǼòµ¥»®·Ö³É¼¸¸öÄ£¿é¾ÍÐС£Èç¹û³öÏÖÁËÉÙÊýÐèҪͨѶµÄ³¡¾°£¬Ê¹ÓÃNotification¼´¿É¡£
±ÜÃâ¹ý¶ÈÉè¼Æ
Ô½¼òµ¥µÄÔ½ÊÇÓÐЧµÄ
¸´Ôӵļܹ¹Éè¼ÆÍùÍùÔÚ¿Í»§¶Ë¸ßËÙµü´ú¿ª·¢ÖÐÒâÒå²»´ó£¨Ïà±È·þÎñ¶Ë£©
ûÓÐÒøµ¯£¡
Èí¼þ¿ª·¢Êǹ¤³Ì»¯µÄ£¬Ã»ÓÐÍêÃÀµÄ¼Ü¹¹Ä£Ê½£¬ºÜ¶àʱºòÐèÒª¾ßÌåÎÊÌâ¾ßÌå·ÖÎö£¬Áé»îÔËÓÃÉè¼ÆÄ£Ê½£¬µÃµ½¾Ö²¿µÄ×îÓŽ⡣±ÈÈçÇ°ÃæÌáµ½µÄMVPģʽ£¬Èç¹ûÉú°áÓ²Ì×£¬Í¬ÑùÎÞ·¨½â¾öPresenter²ã¸´ÔÓµÄÎÊÌâ¡£
ÈçºÎÅжϹý¶ÈÉè¼Æ£¿
½ºË®´úÂë¹ý¶à
´óÁ¿ÎļþµÄÐÐÊýСÓÚ100
ÏëÁËÒ»Ì죬ûд³ö´úÂ룬Ҳûд³ö¼Ü¹¹·½°¸
ÖØ¹¹µÄʱ»úºÍ¶ÔÏó
ʱ»ú
µ¥Îļþ´úÂëÐÐÊý¿ªÊ¼³¬¹ý500ÐеÄʱºò
Code ReviewÊÇÖØ¹¹µÄºÃ°ïÊÖ
¶ÔÏó
ÐèÇó¾³£±ä»¯»òÔö¼ÓµÄ¹¦ÄÜ£¬Ò»¶¨Òª×¢ÒâÉè¼Æ£¬±ÜÃâ×ßÏòÖÊÁ¿²»¿É¿Ø
Îȶ¨ÇÒ²»±äµÄ¹¦ÄÜ£¬²»Öع¹
×ܽá
×îºóÎÒÏë̸̸Éè¼ÆÄ£Ê½¡£ÆäÊµÖØ¹¹µÄ¹ý³ÌÆäʵҲ¾ÍÊÇÁé»îÔËÓÃÉè¼ÆÄ£Ê½¶Ô´úÂë½øÐÐÓÅ»¯ºÍ¸Ä½ø¡£ºÜ¶àÈËÉè¼ÆÄ£Ê½Ò²¿´Á˺ܶ࣬ѧϰÁ˺ܶ࣬µ«ÕæÕýÔÚ¹¤×÷ÖÐÄܺÏÀíʹÓõÄÈ´ºÜÉÙ¡£ËùÒԹؼü»¹ÔÚÁé»îÔËÓÃËĸö×ÖÉÏ£¬ÄÜ×öµ½ÕâÒ»µã£¬ÄãµÄˮƽ¾Í»áÉÏÒ»¸ǫ̈½×¡£
ËùÒÔÔÚÆ½Ê±µÄ¹¤×÷ÖУ¬ÎÒÃÇÒªÓжԴúÂëµÄTaste£¬ÖªµÀʲôÑùµÄÊǺôúÂ룬ʲôÑùµÄÊÇÔà´úÂ룬¾¡Ôç·¢ÏÖ¿ÉÓÅ»¯¿É¸Ä½øµÄµØ·½£¬³ÖÐø²ú³ö¸ßÖÊÁ¿´úÂ룬¶ø²»ÊÇʵÏÖ¹¦ÄܾÍÍòÊ´󼪣¬·ñÔò³ÙÔçҪΪÄãÒÔǰ͵µÄÀÁÂòµ¥¡£
ÒÔÉϾÍÊÇÎÒÔÚÎÒ˾ÏîÄ¿ÖØ¹¹¹ý³ÌÖеĵÄһЩ×ܽáºÍ·ÖÏí£¬Ë®Æ½ÓÐÏÞ£¬Ï£Íû¶Ô´ó¼ÒÓÐËù°ïÖú¡£ |