ã人ã ããã®ã«ã«ãŒãœãè³è³ããçç±ãããããŸãããïŒã èã§çžãããŠãã°ãŒã°ã«ã§ãæã£ãŠ-äœãçè§£ã§ããŸããïŒ
ãã«ã«ãŒãœã®æãèããããšããããŸããïŒã
-ã¯ããç§ã¯åœŒã®ã¬ããŒããªãŒããäœããåŸãŸããã©ãããããã¯é»è©±ã§æããŸããã
ITã«åºã¥ãæ¢åµã ããŒã1
Model-View-Controllerãããã¯ã«é¢ããå¥ã®èšäºãæžãã®ã¯æãã§ãã«ã«ãã«ãšã£ãп害ã§ââããããšã«æ°ä»ããŸããã ããããç§ã¯ãã®ããã¿ãŒã³ããšã¯ããŸãã«ãå人çãªé¢ä¿ãæã£ãŠããŸã-倱æãããããžã§ã¯ããå幎ã®äººçããããŠããã¹ã±ããã§ãã®ããŒãã¯ãŒã¯ã
MVCãªãã§ãååã«åºã¥ããŠãããžã§ã¯ããæžãçŽããŸãã-ã³ãŒãã¯ã¹ãã²ããã£ã®ããŒã«ã®ããã«èŠããªããªããååã«ã«ãããããŸããïŒããã«ã€ããŠã¯ããããžã§ã¯ãã§ã®ãååãã®é©ç𿹿³ã«ã€ããŠã®çŽæã®èšäºã§è©³ãã説æããŸãïŒã ããããç§ãã¡ãäœãééããããäœãééã£ãŠããããçè§£ãããã£ãã®ã§ãã ãããŠãæéã®çµéãšãšãã«ãç¥èªMVCãå«ããã¹ãŠã®ãã®ãç ç©¶ãããŸããã ã¯ãªãšãŒã¿ãŒã§ããããªã°ãŽã§ã»ã¬ãŒã³ã¹ã«ãŠã¬ã®ãªãªãžãã«äœåãåºäŒããŸã§...
ãããŠããã¹ãŠãæå®ã®å Žæã«èœã¡ãŸããã å®éãååã«åºã¥ããŠãããªãªãžãã«MVCããåçºæããããšã倿ããŸããã ãããŠãMVCãšããŠãã°ãã°æç€ºããããã®ã¯ããããšã¯äœã®é¢ä¿ããããŸãã...ããããè¯ãã¢ãŒããã¯ãã£ãšåæ§ã«ã ãããŠããã¯ã©ã·ãã¯MVCãã®ç Žç£ã«ã€ããŠäœäººã®äººãæžããŠãããã倿ããããã«ã€ããŠè°è«ããããããçš®é¡ã®ä¿®æ£ãèæ¡ãããã®åé¡ã«ééããã®ã¯ç§ãã¡ã ãã§ã¯ãããŸããã
30幎以äžã«ããããMVCã§åéãããã¢ã€ãã¢ãšãœãªã¥ãŒã·ã§ã³ã¯ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®éçºã«ãšã£ãŠæãéèŠãªãã®ã§ãã ããããå¥åŠãªããšã«ãæ¢åã®æ··ä¹±ãšççŸããè§£éã®è±å¯ãã«ãããããããéçºè ã¯äžå€æ å ±ã«æºè¶³ãç¶ãããŠã£ãããã£ã¢ããMVCã®ç¥èãåŒãåºããã€ã³ã¿ãŒãããäžã®å°ããªèšäºãšWebã¢ããªã±ãŒã·ã§ã³ãéçºããããã®ãã¬ãŒã ã¯ãŒã¯ãäœæããŸãã æããé«åºŠãªãèªã¿ç©ã¯ããŒãã£ã³ã»ãã¡ãŠã©ãŒã§ãã ãããŠãäœããã®çç±ã§ããœãŒã¹ãåç §ãã人ã¯ã»ãšãã©ããŸããã ãã®ã®ã£ãããåããããšæããŸãã ãããŠåæã«ããã€ãã®ç¥è©±ãææããŸãã
ç¥è©±ïŒMVCã¯SmallTalkçšã«äœæãããŸãã
MVCã³ã³ã»ããã¯ã1978/79幎ã®ãŒããã¯ã¹PARCã§ã®äœæ¥ã®çµæãšããŠTrygve Reenskaugã«ãã£ãŠçå®ãããŸããã ååãšããŠãMVCã®äœæã¯SmallTalkèšèªã«é¢é£ä»ããããŠããŸãããããã¯å®å šã«çå®ã§ã¯ãããŸããã å®éãReenskaugã¯DynabookããŒã ã§ãAlan Kayçãããã¹ãŠã®å¹Žéœ¢ã®åäŸåãã®ã©ãããããã³ã³ãã¥ãŒã¿ãŒã®éçºã«æºãããŸããã
ãã®ãããžã§ã¯ãã®èŠæš¡ãšé©åœãè©äŸ¡ããããã«ããããã®å¹Žã¯ãã³ã³ãã¥ãŒã¿ãŒã§äœæ¥ããããã«ãè€æ°ããŒãžã®ããã¥ã¢ã«ãå匷ããåŠäœãååŸããå¿ èŠããã£ã幎ã§ãã£ãããšã«çæããå¿ èŠããããŸãã Alan Kayã解決ããããšããŠããã¿ã¹ã¯ã¯ãã³ã³ãã¥ãŒã¿ãŒãšå¹³åçãªãŠãŒã¶ãŒãè¿ã¥ããããããéãŠãå£ããå£ããããšã§ããã 圌ã¯ãŠãŒã¶ãŒã«éåžžã«ã·ã³ãã«ã§äŸ¿å©ãªããŒã«ãæäŸãããã£ãããåæã«ã³ã³ãã¥ãŒã¿ãŒãšè€éãªã¢ããªã±ãŒã·ã§ã³ã®å¶åŸ¡ãå¯èœã«ããã
ãã®åŸãã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ã®åºç€ãç¯ãããããã¬ã³ããªãŒãªã€ã³ã¿ãŒãã§ã€ã¹ãã®æŠå¿µã圢æãããŸããã ãŸããSmallTalkèšèªã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ã®æŠå¿µãšãšãã«éçºããããããèšç·ŽãããŠããªããŠãŒã¶ãŒã¯ãããã°ã©ã ãçè§£ããŠèšè¿°ã§ããŸããã Steve Jobsã 1979幎ã«Xerox PARCã§èŠããã®ã«ã€ããŠèª¬æããŸã-Steve JobsãXEROXããGUIã®ã¢ã€ãã¢ãåŸãæ¹æ³ ïŒ6.30ããïŒ
ãã®ãããžã§ã¯ãã¯ãéåžžã«åŒ·åãªéçºè ã®ã°ã«ãŒãã«ãã£ãŠçŽ10幎éç¶ããããŠããŸãã ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®åéãããã³ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®åéããããŠäžè¬ã«å€§èŠæš¡ã§è€éãªã³ã³ãã¥ãŒã¿ãŒã·ã¹ãã ã®éçºã®äž¡æ¹ã®çµæãšããŠèŠã€ãã£ããœãªã¥ãŒã·ã§ã³ãã¢ãããŒããååã¯ãReenskaugã«ãã£ãŠããçšåºŠãŸãšããããMVCã®åºç€ã圢æããŸããã ã§ããããMVCã¯ããŸã第äžã«ãäžé£ã®ã¬ã€ãã¢ãŒããã¯ãã£ã®ã¢ã€ãã¢ã§ãã SmallTalk-80ã§ã¯ããããã®ã¢ã€ãã¢ãåããŠæå³ã®ããå®è£ ã«ãªããŸããã ããã«ãããã¯ReenskaugããŒããã¯ã¹PARCãé¢ããåŸã圌ã®åå ãªãã§è¡ãããŸããã
æ®å¿µãªãããé·ãéããå®éã®MVCãã«é¢ããæ å ±ã¯ã»ãšãã©ãããŸããã§ããã ã¯ãªãšãŒã¿ãŒããã®æåã®æ¬æ Œçãªåºçç©ã¯ãããã10幎åŸã«ç»å ŽããŸãã-ã Smalltalk-80ã§Model-View-ControllerãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãã©ãã€ã ã䜿çšããããã®ã¯ãã¯ãã㯠ãã ãã¡ãŠã©ãŒã§ãããMVCãSmallTalkã®äœæ¥ããŒãžã§ã³ã§ç ç©¶ãããšè¿°ã¹ãŠããŸãããMVCãåŠç¿ã§ããããã«ãSmalltalk-80ã®äœæ¥ããŒãžã§ã³ã«ã¢ã¯ã»ã¹ã§ããŸããããã®ç ç©¶ã¯åŸ¹åºçã§ãããšã¯èšããŸãããããœãªã¥ãŒã·ã§ã³ã®ããã€ãã®åŽé¢ãçè§£ããããšãã§ããŸããä»ã®èª¬æã§èª¬æã§ããŸããã§ãã ã "
ã§ãããããç¥è©±ããããŸããŸãªè§£éã®åºçŸã¯é©ãããšã§ã¯ãããŸããã åé¡ã¯ãå€ãã®ãã»ã«ã³ããªããœãŒã¹ãMVCãæªãã 圢ã ãã§ãªããäžèŠåçŽåããã圢åŒãéåžžã¯ç¹å®ã®åœ¢åŒã®åœ¢åŒã§èšè¿°ããããšã§ãã
ãã®çµæãå€ãã®äººã ã¯MVCãã¹ããŒã ãŸãã¯ãã¿ãŒã³ãšæ¬åœã«èããŠããŸãïŒãã®çç±ã¯åžžã«çåãçããŠããããã§ã-æ¢åã®å€ãã®ã¹ããŒã ã®ã©ãããæ£ãããã®ãããªããããªã«å€ãã®ãïŒã ããé«åºŠãªããŒãžã§ã³ã§ã¯ãMVCã¯è€åãã¿ãŒã³ãšåŒã°ããŸããã€ãŸããè€éãªã¢ããªã±ãŒã·ã§ã³ãå®è£ ããããã«äžç·ã«åäœããè€æ°ã®ãã¿ãŒã³ã®çµã¿åããã§ãïŒããã§ã¯ãObserverãStrategyãCompositeã«ã€ããŠèª¬æããŸãïŒã ãŸããMVCã¯äž»ã«ãããŸããŸãªãã³ãã¬ãŒãã䜿çšããŠããŸããŸãªæ¹æ³ã§å®è£ ã§ããã¢ãŒããã¯ãã£ã®ã¢ã€ãã¢/åå/ã¢ãããŒãã®ã»ããã§ããããšãçè§£ããŠãã人ã¯ãããããã§ã...
åŸè ã«ã¯ãç¹ã«Martin Fowlerãå«ãŸããŸãã åœŒã¯æ¬¡ã®ããã«æžããŠããŸãã ãMVCã¯ãã°ãã°ãã¿ãŒã³ãšåŒã°ããŸãããå€ãã®ç°ãªãã¢ã€ãã¢ãå«ãŸããŠããããããã¿ãŒã³ãšããŠãããèªèããããšã«ã¯ç¹å¥ãªå©ç¹ã¯ãããŸããã ããŸããŸãªäººã ãããŸããŸãªãœãŒã¹ã§MVCãèªã¿ãããããããŸããŸãªã¢ã€ãã¢ãåŒãåºããŠããŸãããããããåããã®ãã€ãŸããMVCããšåŒã³ãŸãã ããã¯å€ãã®æ··ä¹±ãæããå ããŠãMVCã®èª€è§£ã誀解ã®åå ã«ããªããŸãããŸãã§ãæå·ããé»è©±ãã§MVCãèŠã€ãããã®ããã«ã MVCãšåŒã°ãããã®ãèªåã§èŠã€ããããªãã£ãåæ°ãèŠãããšããããŸããã [GUIã¢ãŒããã¯ãã£]
ãæå·ããé»è©±ãã®çç±ã®1ã€ã¯ããèå°è£ãã®å¯æ¬¡çãªæ å ±æºã®ã»ãšãã©ãæãéèŠãªãã®ãæ®ããŠããããšã§ã-äœæè ãMVCã«å®ããéåžžã«å»ºç¯çãªã¢ã€ãã¢ãšã圌ãã解決ããããšããã¿ã¹ã¯ã§ãã MVCã®æ¬è³ªãçè§£ããèšå€§ãªæ°ã®èœãšã穎ãšãšã©ãŒãåé¿ã§ããããã«ãããã¹ãŠã®ãã®ã ãã®ããããã®èšäºã§ã¯ãéåžžãèå°è£ãã«æ®ã£ãŠãããã®ãã€ãŸããMVCã«çµã¿èŸŒãŸããã¢ãŒããã¯ãã£ã®åçãšã¢ã€ãã¢ã®èгç¹ãã説æããŸãã ã¹ããŒã ããããŸããã ãããããããããå§ããŸãã
ããããæåã®ãªã³ã¯ã Reenskaugã®å ã®ã¬ããŒãã¯ã å ã®MVCã¬ããŒã ãã§ãã åŸã«ãã¬ã³ã¹ã«ãŠã°ã¯ããããã¹ãŠãããæç¢ºã«å®åŒåãããã®åŸã®ç ç©¶ã ã¢ãã«-ãã¥ãŒ-ã³ã³ãããŒã©ãŒïŒMVCïŒ ãã§èšèšããŸããã ãã®éå»ãšçŸåš ãã ãããã誰ããããã®æéã«é¢é£ããRenskaugã®èšé²ãåéãããŠããããŒãžã«èå³ãæã£ãŠããã§ãããã圌ã®ã³ã¡ã³ã-MVC XEROX PARC 1978-79 ã
éçºè ã«ããSmallTalk-80èšèªã§ã®MVCã«ã€ããŠã®æ¢è¿°ã®æåã®åºçç©ã¯ã ã Smalltalk-80ã·ã¹ãã ã®Model-View-ControllerãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãã©ãã€ã ã®èª¬æ ãïŒGlenn Krasnerããã³Stephen PopeïŒã®ã¿ã§ãã ãŸããèšäºã Smalltalk-80ã§ã®ã¢ããªã±ãŒã·ã§ã³ããã°ã©ãã³ã° ããåèã«ããŠãã ããã Model-View-Controllerã®äœ¿ç𿹿³ ãïŒSteveBurbeckã¯ãSmalltalk-80ã«åºã¥ããIBMåãSmallTalkã³ã³ãã€ã©ã®éçºãããã³MacAppã®éçºã«è²¢ç®ããŸããïŒã ãŸãã誰ããå®å šãªæ²¡å ¥ãæãã§ãããªã-â Smalltalk-80ã Reenskaugãã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ãŒãšããçšèªãäœæããéã®è°è«ã§æåãªAdele Goldberg ã®å¯Ÿè©±åããã°ã©ãã³ã°ç°å¢ ã
MVCã¹ããŒã
ãããäœã§ãããåââé¡ãäœã§ããããæç¢ºã«ããããã«ãæåã«æãå žåçãªMVCãã¹ããŒã ããåæããŸãããã ããã¯éèŠãªããšã§ãããªããªããå€ãã®å Žåããã€ã¢ã°ã©ã ã«ã¯èª¬æãäžãããããå®çŸ©ã¯ããå Žæããåçšããããã€ã¢ã°ã©ã ã¯å¥ã®å Žæããåçšãããããã§ãã ãã®çµæããŸã£ããç°ãªããã€ã¢ã°ã©ã ãæã€åãMVCèšè¿°ãèŠã€ããããšãã§ããŸãããããã¯éåžžã«çŽããããã§ãã
ãã®ãããMVCã¯éåžžã«ç°ãªãæ¹æ³ã§è§£éããã³æåãããŠãããšããäºå®ã«ããããããããã®å€æ§æ§ã®ãã¹ãŠã«ãããŠãå ±éã®ãã³ã¢ããéžæããããšãã§ããŸãã äžè¬çãªããšã¯ãç¹å®ã®æ¹æ³ã§æ¥ç¶ãããŠããã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ãŒã®3ã€ã®éšåã«ã€ããŠèšãããŠããããšã§ãïŒ
ã¢ãã«ã¯ãã¥ãŒãŸãã¯ã³ã³ãããŒã©ãŒã«ã€ããŠäœãèªèããŠããªããããç¬ç«ããã³ã³ããŒãã³ããšããŠéçºããã³ãã¹ãã§ããŸãã ãããŠããããMVCã®ãã€ã©ã€ãã§ãã
ãã¥ãŒã«ã¢ãã«ã衚瀺ãããŸãã ãããŠãããã¯åœŒãäœããã®åœ¢ã§ãããã衚瀺ã«å¿ èŠãªããŒã¿ãååŸããªããã°ãªããªãããšãæå³ããŸãã æ¬¡ã®2ã€ã®ãªãã·ã§ã³ãæãäžè¬çã§ãã1ïŒ ã¢ã¯ãã£ããã¥ãŒ ãã¢ãã«ãèªèããã¢ãã«ããå¿ èŠãªããŒã¿ãååŸããŸãã 2ïŒ ããã·ããã¥ãŒ ãããŒã¿ã¯ã³ã³ãããŒã©ãŒã«ãã£ãŠæäŸãããŸãã ãã®å Žåããã¥ãŒã¯ã©ã®ãããªæ¹æ³ã§ãã¢ãã«ã«æ¥ç¶ãããŠããŸããã
ããã€ãã®ã¿ã€ãããããŸããããšãã°ãããŒãã«ãŸãã¯ã°ã©ãã®åœ¢åŒãªã©ãç°ãªãæ¹æ³ã§åãããŒã¿ã衚瀺ããããã¢ãã«ã®ããŒã¿ã®ç°ãªãéšåã衚瀺ãããããããšãã§ããŸãã
- ã³ã³ãããŒã©ãŒã¯ããããæãç©è°ãéžãã³ã³ããŒãã³ãã§ãã ããã«ãããããããã³ã³ãããŒã©ãŒã¯åžžã«ã¢ãã«ã«ã€ããŠç¥ã£ãŠãããã¢ãã«ã倿Žã§ããããšããããããŸãïŒéåžžã¯ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã®çµæãšããŠïŒã
ãŸãããã¥ãŒ/çš®ïŒç¹ã«è€æ°ããå ŽåïŒã管çããããã«å¿ããŠçš®ã«ã€ããŠç¥ãããšãã§ããŸãããããã¯å¿ é ã§ã¯ãããŸããã
ãããããMVCã®æãäžè¬çãª2ã€ã®çš®é¡ã®åºæ¬çãªïŒæå€§éã«åçŽåãããïŒã¹ããŒã ãååŸããŸãã åãæ¶ãç·ã¯ãã³ã³ãããŒã©ãŒãšãã¥ãŒã®ãªãã·ã§ã³ã®æ¥ç¶ã瀺ããŸãã
ããã¯ããã¡ãŠã©ãŒã®åºæ¬å³ã®ããã«èŠããŸãããã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ãŒéã®äž»ãªæ¥ç¶ãå®éããã¥ãŒãšã³ã³ãããŒã©ãŒã¯äºãã«çŽæ¥æ¥ç¶ã§ãããããåºæ¬ãšåŒã³ãŸãããã ããéçºè ã¯éåžžãã®æ¥ç¶ã䜿çšããŸããã ïŒ "ïŒ
次ã ãã¥ãŒãªã©ã®ã¢ãã«ã¯ãããã·ããŸãã¯ã¢ã¯ãã£ãã«ããããšãã§ããŸãã ããã·ãã¢ãã«ã¯ããã¥ãŒãã³ã³ãããŒã©ãŒã«ã¯äžå圱é¿ããŸããã ãã®å Žåãã¢ãã«ãžã®ãã¹ãŠã®å€æŽã¯ã³ã³ãããŒã©ãŒã«ãã£ãŠç£èŠãããã³ã³ãããŒã©ãŒã¯å¿ èŠã«å¿ããŠãã¥ãŒãåæç»ãã責任ããããŸãã
ããããéåžžãMVCã¯äŸç¶ãšããŠã¢ã¯ãã£ãã¢ãã«ãªãã·ã§ã³ãæå³ããŸãã
ãã¢ã¯ãã£ãã¢ãã«ãã¯ã倿Žãçºçããããšãéç¥ããŸãã ãããŠã Observerãã³ãã¬ãŒããä»ããŠãããè¡ãããã¹ãŠã®ããµãã¹ã¯ã©ã€ããŒãã«å€æŽéç¥ãéä¿¡ããŸãã ã¢ã¯ãã£ããã¥ãŒã¯ãããã®ã¡ãã»ãŒãžèªäœã«ãµãã¹ã¯ã©ã€ããããããã¢ãã«ããå¿ èŠãªããŒã¿ãåèªã¿èŸŒã¿ããŠæŽæ°ããã¿ã€ãã³ã°ãããããŸãã ãããã·ããã¥ãŒãã®å Žåããµãã¹ã¯ã©ã€ããŒã¯ã³ã³ãããŒã©ãŒã§ãããã³ã³ãããŒã©ãŒããã¥ãŒãæŽæ°ããŸãã
ãªãã¶ãŒããŒãã³ãã¬ãŒãã䜿çšãããšãã¢ãã«ã¯äžæ¹ã§ã¯å€æŽãçºçããããšããã¥ãŒãŸãã¯ã³ã³ãããŒã©ãŒã«éç¥ãã仿¹ã§ã¯å®éã«ãããã«ã€ããŠãäœãç¥ããªããããšãã§ããŸãïŒãã ããç¹å®ã®æå®ãããããµãã¹ã¯ã©ã€ããŒãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããšãé€ãïŒã ããã¯ãŠã£ãŒã¯ãã€ã³ãã£ã³ã°ãšåŒã°ããMVCã®2çªç®ã®ããŒãã€ã³ããšèŠãªãããŸãã
ãã®ãããMVCãè€åãã³ãã¬ãŒãã§ãããšèšãããå ŽåããŸã第äžã«ã Observerãã¿ãŒã³ããã®ã³ã³ããŒãã³ãã®1ã€ãšããŠèšåãããŸãã å³ã§ã¯ãéåžžã匱ãçµåã¯ç Žç·ã®ç¢å°ã§æãããŸãããå€ãã¯ãã®èŠåãç¡èŠããŸãã
ãããã£ãŠãããé«åºŠãªãMVCã¹ããŒã ãã¯æ¬¡ã®ããã«ãªããŸãã
æ³šïŒ ããã·ãã¢ãã«ãšã¢ã¯ãã£ãã¢ãã«ãšããçšèªã«ãŸã£ããç°ãªãæå³ãå ¥ããŠããèè ãããŸãã ã€ãŸããéåžžãThinã¢ãã«ïŒããŒã¿ã®ã¿ãå«ãã¢ãã«ïŒããã³Tolstoyã¢ãã«ïŒã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ããžãã¹ããžãã¯ãå«ãæ¬æ Œçãªã¢ãã«ïŒãšåŒã°ãããã®ã§ãã
ããŠãæåŸã äžè¬çã«ãMVCã¯ããã®ããªãšãŒã·ã§ã³ã®ãããã«ãããŠããäž»ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãåããã¢ããªã±ãŒã·ã§ã³ãéçºããããã®ãã³ãã¬ãŒãã§ããããã®äž»ãªç®çã¯ã¢ããªã±ãŒã·ã§ã³ãšãŠãŒã¶ãŒã®çžäºäœçšãä¿èšŒããããšã§ãã ãã®ããã ãŠãŒã¶ãŒã¯ïŒæç€ºçãŸãã¯æé»çã«ïŒæ¬æ ŒçãªMVCã¹ããŒã ã«åå ããŠããå¿ èŠããããŸãã ãããŠãããã§åºæ¬çã«2ã€ã®è§£éãèŠã€ãããŸããïŒ
ãŠãŒã¶ãŒã¯ã³ã³ãããŒã©ãŒãä»ããŠã¢ããªã±ãŒã·ã§ã³ãå¶åŸ¡ãããã¥ãŒã¯ã¢ãã«ã«é¢ããæ å ±ã衚瀺ããããã ãã«æ©èœãããŠãŒã¶ãŒã¯ãããèŠãã ãã§ã
å€ãã®å ŽåããŠãŒã¶ãŒãã³ã³ãããŒã©ãŒãæäœããããšã ãã瀺ããŸããã圌ãèŠããã®ã¯è¡šç€ºãããŸãã
ãŠãŒã¶ãŒã¯ãã¥ãŒãšã®ã¿å¯Ÿè©±ããŸãã ã€ãŸãããã¥ãŒã¯ã¢ãã«ãåæ ããã ãã§ãªãããŠãŒã¶ãŒã³ãã³ããåä¿¡ããŠââã³ã³ãããŒã©ãŒã«æž¡ããŸãã ãã®å ŽåãViewãšControllerã®éã«å¥ã®æ¥ç¶ã圢æãããŸãïŒçŽæ¥ïŒViewã¯Controllerãèªèããæ å ±ãçŽæ¥è»¢éããŸãïŒãŸãã¯ãã»ãšãã©ã®å Žåã匱ããããŸãïŒViewã¯åã«ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã«é¢ããæ å ±ããã¹ãŠã®é¢å¿ã®ãããµãã¹ã¯ã©ã€ããŒã«éä¿¡ããControllerã¯ãã®ãã¥ãŒã¹ã¬ã¿ãŒã賌èªããŸãïŒ
æ³šïŒ ããã·ããã¥ãŒã®ãªãã·ã§ã³ã¯ããã¥ãŒãã¢ãã«ãšãŸã£ããæ¥ç¶ãããŠããããã³ã³ãããŒã©ãŒã衚瀺çšã®ããŒã¿ãæäŸããå ŽåãMVCãšåŒã°ããããšããããå¥ã®ããŒãžã§ã³-MVPã«åå²ãããŠããã³ã³ãããŒã©ãŒããã¬ãŒã³ã¿ãŒã«ååã倿Žãããããšã«çæããå¿ èŠããããŸãã
äžèšã®ãã¹ãŠã説æããããã«ããã€ã³ã¿ãŒãããããã®ãããã€ãã®å³ã瀺ããŸãïŒããããéåžžã«ç°ãªãçç±ãããæç¢ºã«ãªãããšãæã¿ãŸãïŒã
ãããŠä»ãæãéèŠãªããš-ãããã¯ã©ã®ããã«é©çšããããããã¯äœãæå³ããã¢ãã«ãã¥ãŒãšã³ã³ãããŒã©ãŒã¯ã¢ããªã±ãŒã·ã§ã³ãèšè¿°ãããšãã«äœã«å¯Ÿå¿ããŸããïŒ
ããã§ã¯ãæ ¹æ¬çã«ç°ãªã2ã€ã®ã¢ãããŒããåºå¥ã§ããŸããããããã®ã¢ãããŒãã§ã¯ãã¢ãã«ããã¥ãŒãã³ã³ãããŒã©ãŒãéåžžã«ç°ãªãæ¹æ³ã§è§£éãããŸãã
Webããã®ã3å±€MVCã
æåã®ã¢ãããŒãã¯ãMVCãæãåºã䜿çšãããŠããWebããã°ã©ãã³ã°ã«ç±æ¥ãããããWebããã°ã©ãã³ã°ã«ç¹åŸŽçãªæ©èœãå¯èœãªéãåæ ããŠããŸãã ã€ãŸãã3å±€ã¢ãŒããã¯ãã£ãã¯ã©ã€ã¢ã³ã-ãµãŒããŒ-ããŒã¿ããŒã¹ããžã®ãã€ã³ããšã¹ã¯ãªããèšèªã®æ®åã ãã®çµæãMVCã³ã³ããŒãã³ãã¯ãã¢ãŒããã¯ãã£ã®3ã€ã®å±€ã«æ£åŒã«ãã€ã³ããããæ¬¡ã®ããšãããããŸããã
ã¢ãã«=ããŒã¿ããŒã¹
ã¢ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³ãåäœããåãªãããŒã¿ã§ã
ã³ã³ãããŒã©ãŒ=ãµãŒããŒ
ã³ã³ãããŒã©ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ããžãã¹ããžãã¯ã§ãã æã«ã¯ãã³ã³ãããŒã©ãŒã¯ãã¹ãŠã®èŠæ±ãšæææ±ºå®ã®åŠçã®äžå¿ã§ãããã¢ãã«ãšãã¥ãŒã®éã®æ¥ç¶ãæäŸããäžéå±€ã§ãããšèšãããšãããããŸãã
- 衚瀺=ã¯ã©ã€ã¢ã³ã ïŒéåžžã¯èãïŒ
ãã¥ãŒã¯ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã§ãã ããã«ããã®å Žåã®ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãååãšããŠãäž»ã«ããã¶ã€ã³ããšããŠã®ã¿çè§£ãããåãªãã°ã©ãã£ãã¯èŠçŽ ã®ã»ããã§ãã ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã®ããžãã¯ãšããŒã¿ãæäœããããžãã¯ã¯ãã³ã³ãããŒã©ãŒã«è»¢éãããŸãã
ãã®ã¢ãããŒãã®äžé©åãã«ã€ããŠã¯ãã§ã«å€ãã®ããšãæžãããŠããã®ã§ãWikipediaïŒ MVCãæãäžè¬çãªééã ïŒã«ããå ¥ã£ãŠããŸãã ãã詳现ã«çºçããåé¡ã«ã€ããŠã¯ãå€å žçãªã MVCã®MïŒã¢ãã«ã誀解ãããéå°è©äŸ¡ãããŠããçç± ãã«ãªã£ãèšäºã§èª¬æãããŠããŸãã ãããã£ãŠãç§ã¯ç°¡åã«ç°¡åã«èŠçŽããããšããŸãïŒ
ã¢ãã«ã®ç¬ç«æ§ã¯MVCã®äžå¿ã§ãã ã¢ãã«ãèãå Žåãã€ãŸãããŒã¿ã®ã¿ãå«ãŸããŠããå Žåããã®ç¬ç«ããéçºã®å¯èœæ§ã¯ã»ãšãã©æå³ããããŸããã ãããã£ãŠããã®ã¢ãããŒãã§ã¯ãMVCèªäœãç¡æå³ã§ãã
ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ããžãã¹ããžãã¯ãã€ãŸãã³ãŒãã®å€§éšåã¯ã³ã³ãããŒã©ãŒã«éäžããŠããŸããããã¯ãã³ã³ãããŒã©ãŒãMVCã§æãäŸåããéšåã§ãããšããäºå®ã«ããããããã§ããäžè¬ã«ãã¢ãã«ãšãã¥ãŒã«äŸåããŸãã äžè¬çã«èšãã°ãé©åã«èšèšãããã¢ããªã±ãŒã·ã§ã³ã§ã¯ã圌ãã¯æ£å察ã®ããšãããããšããŸã-æãäŸåããéšåã¯æå€§ã§ã¯ãªããæå°ã§ãªããã°ãªããŸãã
å®éã«ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ãããŒã©ãŒã¯éåžž1ã€ã®ã¹ã¯ãªããã«å¯Ÿå¿ããå®éã«ãã¹ãŠã®ããžãã¹ããžãã¯ãã³ã³ãããŒã©ãŒã«å ¥ããããšã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã»ãšãã©ã1ã€ã®ã¹ã¯ãªããã«ããããšãæå³ããŸãã ãããTTUKãšããçšèªã®ç±æ¥ã§ãã倪ããŠumbãã³ã³ãããŒã©ã§ãã
- ååãšããŠãã¢ãã«ãèãã ãã§ãªãããã¥ãŒïŒãã ãã¥ãŒãŸãã¯ãã ã€ã³ã¿ãŒãã§ã€ã¹-ãã GUIããã ãã¥ãŒïŒãèããããçµæãšããŠãã³ã³ãããŒã©ãŒã«ã¯ã¢ããªã±ãŒã·ã§ã³ã®ãã¹ãŠã®ããžãã¹ããžãã¯ã«å ããŠãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹å¶åŸ¡ããžãã¯ãå«ãŸããŸãã ã€ãŸãããã®ã¢ãããŒãã§ããžãã¹ããžãã¯ãšãã¬ãŒã³ããŒã·ã§ã³ããžãã¯ãåé¢ãã代ããã«ããããã¯æ··åãããŸãã
ãã¡ãããããã°ã©ã ã¯Webã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã«å¯Ÿå¿ããå€ãã®MVCã«åå²ãããããã«ããç¶æ³ã¯ä¿åãããŸãããæ®å¿µãªããæ¬è³ªã¯å€ãããŸããã ãã®åé¡ã¯æ¢ç¥ã§ãããããã«è¯ãèšäºããããŸã-ã RIA Architecture ãã
äžè¬çãªãšã©ãŒïŒããžãã¹ããžãã¯ã³ã³ãããŒã©ãŒãšGUIããžãã¯ã®æ··åš
è¯ããã¥ãŒã¹ã¯ãã»ãã®æ°å¹Žåã«æãäžè¬çã ã£ããMVCã®WebããŒãžã§ã³ãããçŸåšç©æ¥µçã«å°äœã倱ã£ãŠããããšã§ãã æªããã¥ãŒã¹ã¯ãããããŸã äžè¬çã§ãããšããããšã§ããä»ã§ã¯æç€ºçã«ã§ã¯ãªããå€è£ ãã圢ã§ã®ã¿ã§ãã ãã¬ãŒãºã«é¢ããŠïŒåŒçšïŒïŒã ã¢ãã«ã¯ããŒã¿ããŒã¹ãªã©ãšã®ããŒã¿äº€æã§ã ã ãã®ããŒã¿ãåŠçãããã¥ãŒã®æºåãããã³ã³ãããŒã©ãŒããžã㯠ãã¯çŸåšãç©æ¥µçã«ããã€ãã¹ãã§ãããæ¬¡ã®ããã«æžãå§ããŠããŸãã
- ã¢ãã«ã¯ãããŒã¿ãšããããæäœããæ¹æ³ã§ã
- ã³ã³ãããŒã©ãŒ-ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ãšãŠãŒã¶ãŒãå ¥åããæ å ±ã®åŠç
å®éããªããžã§ã¯ãæåã¢ããªã±ãŒã·ã§ã³ã«ã¯ããŒã¿ã¯ãããŸããããå€ãã®ãªããžã§ã¯ãããããããããã«ããŒã¿ãšããããæäœããæ¹æ³ãå«ãŸããŠããŸãã ããŒã¿ããŒã¹ãžã®ã¢ã¯ã»ã¹ãªããžã§ã¯ãïŒååšããå ŽåïŒãå«ã¿ãŸãã ãããã£ãŠãã¢ãã«ã®å®çŸ©ããããŒã¿ããšããåèªã§å§ãŸãå Žåãæ¬è³ªçã«ã¯ã»ãšãã©æå³ããªããå€ãã®å ŽåãããŒã«åœ¢åŒã§ã¯ããŒã¿ããŒã¹ãžã®ãã¹ãŠã®åãã¢ã¯ã»ã¹ãæå³ããŸãã ãŠãŒã¶ãŒã¢ã¯ã·ã§ã³ã® åŠçã§ã¯ãããžãã¹ããžãã¯ã®å€§éšåãé 眮ãããããšãå€ãããã®çµæããã¹ãŠãŸãã¯ã»ãšãã©ãã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ããžãã¯ãã³ã³ãããŒã©ãŒã«é 眮ãããããšããããããŸãã
ã建ç¯MVCã
2çªç®ã®ã¢ãããŒãã¯ããœãŒã¹ã«ããè¿ããã®ã§ãã ãããã£ãŠããã詳现ã«åæããŸãã
Martin Fowleræ°ã¯ãMVCã¯ãã¿ãŒã³ã§ã¯ãªããã«ã¹ã¿ã æ å ±ã·ã¹ãã ïŒéåžžã¯è€éãªïŒã®æ§ç¯ã«äœ¿çšãããäžé£ã®ã¢ãŒããã¯ãã£ã®ååãšã¢ã€ãã¢ã§ãããšèšã£ãŠããŸãã
ã ããã°ã©ã ã¢ãŒããã¯ãã£ã®äœæãŸãã¯ã¹ããŒã«ã®èšè𿹿³ ãã®èšäºã§ãã¢ãŒããã¯ãã£ã®ååãåéããŠèª¬æããããšããŸããã ç°¡åã«èšãã°ãæ¬è³ªã¯æ¬¡ã®ãšããã§ããè€éãªã·ã¹ãã ã¯ã¢ãžã¥ãŒã«ã«åå²ããå¿ èŠããããŸãã ããã«ãåè§£ãéå±€çã«è¡ãããšãæãŸãããã·ã¹ãã ãåå²ãããã¢ãžã¥ãŒã«ã¯ãå¯èœã§ããã°ãç¬ç«ãŸãã¯ççµå ïŒ äœçµå ïŒã§ããå¿ èŠããããŸãã æ¥ç¶ã匱ãã»ã©ãããã°ã©ã ã®äœæ/çè§£/å±é/修埩ã容æã«ãªããŸãã ãããã£ãŠãåè§£ã®äž»ãªã¿ã¹ã¯ã®1ã€ã¯ãã³ã³ããŒãã³ãéã®çµåãæå°åãã匱ããããšã§ãã
ãŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ã®ãã©ã€ããªã¢ãŒããã¯ãã£ïŒåè§£ïŒãäœæããããã«ããããã®ååãMVCã§ã©ã®ããã«é©çšãããããèŠãŠã¿ãŸãããã åºæ¬çã«ãMVCã¯3ã€ã®ããªãåçŽãªã¢ã€ãã¢ã«åºã¥ããŠããŸãã
ã1ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ããã®ã¢ããªã±ãŒã·ã§ã³ã®ãã¡ã€ã³ã¢ãã«ïŒããžãã¹ããžãã¯ïŒã®åé¢
MVCã®æåã®äž»èŠãªèãæ¹ã¯ãæåã®è¿äŒŒãšããŠããŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ã2ã€ã®ã¢ãžã¥ãŒã«ã«åå²ã§ããããšã§ãã1ã€ã¯ã¢ããªã±ãŒã·ã§ã³ã®äž»èŠãªæ©èœãããžãã¹ããžãã¯ãæäŸãã2ã€ç®ã¯ãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³ãæ åœããŸãã
ãããã£ãŠãã·ã¹ãã ã®ããžãã¹ããžãã¯ãå«ã¿ããŠãŒã¶ãŒãšã®å¯Ÿè©±æ¹æ³ãèããããšãªããã¢ããªã±ãŒã·ã§ã³ã®æ©èœã³ã¢ãæ§æãããã¡ã€ã³ã¢ãã«ãéçºããæ©äŒãåŸãããŸãã
ãŠãŒã¶ãŒãšå¯Ÿè©±ããã¿ã¹ã¯ã¯ãå¥ã®ã¢ãžã¥ãŒã«ïŒ ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ ïŒã§å®è¡ãããæ¯èŒçç¬ç«ããŠè§£æ±ºããããšãã§ããŸã ã
ãã¢ãŒããã¯ãã£MVCãã®ã¢ãã«ãšèŠãªãããã®ã¯ããã¡ã€ã³ã¢ãã«ïŒè±èªã®ãã¡ã€ã³ã¢ãã«ã®ãã¡ã€ã³ã¢ãã« ïŒã§ãïŒãã®ããçšèªïŒã ãããã£ãŠãç¬ç«ããŠãããç¬ç«ããŠéçºããã³ãã¹ãã§ããããšãéåžžã«éèŠã§ãã
ãMVCã®ã³ã¢ã¢ã€ãã¢ãããã³åŸç¶ã®ãã¹ãŠã®ãã¬ãŒã ã¯ãŒã¯ã®ã³ã¢ã¢ã€ãã¢ã¯ã åé¢ãã¬ãŒã³ããŒã·ã§ã³ãšåŒã°ãããã®ã§ããåé¢ãã¥ãŒã®æå³ã¯ãå®äžçãåæ ãããã¡ã€ã³ãªããžã§ã¯ãéã«æç¢ºãªç·ãåŒãããšã§ããç»é¢äžã®GUIèŠçŽ ã§ãããã¬ãŒã³ããŒã·ã§ã³ãªããžã§ã¯ãããã¡ã€ã³ãªããžã§ã¯ãã¯å®å šã«ç¬ç«ããŠããããã¬ãŒã³ããŒã·ã§ã³ãåç §ããã«åäœããå¿ èŠããããŸãããŸããè€æ°ã®è¡šçŸããµããŒãããå¿ èŠããããŸãã ãšããã§ããã®ã¢ãããŒãã¯Unixæåã®éèŠãªåŽé¢ã®1ã€ã§ãããã仿¥ã§ãã³ãã³ãã©ã€ã³ãšã°ã©ãã£ã«ã«ã€ã³ã¿ãŒãã§ã€ã¹ïŒåæã«ïŒã®äž¡æ¹ãä»ããŠå€ãã®ã¢ããªã±ãŒã·ã§ã³ã§åäœããããšãã§ããŸãã -ãã¡ãŠã©ãŒ
ã2ã ãªãã¶ãŒããŒãã³ãã¬ãŒãã«ããã¢ãã«ã®ç¬ç«æ§ãšãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®åæ
2çªç®ã®éèŠãªã¢ã€ãã¢ã¯ãã¢ãã«ãç¬ç«ããŠéçºã§ããããã«ããããã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãžã®äŸåã匱ããå¿ èŠããããšããããšã§ãã ãããŠãäžèšã®ããã«ã Observerãã³ãã¬ãŒãã«ãããããè¡ãããŸãã
ã¢ãã«ã¯å€æŽéç¥ãéä¿¡ããŸã ã ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãããã®ã¢ã©ãŒãããµãã¹ã¯ã©ã€ããããããã¢ãã«ããããŒã¿ãåèªã¿èŸŒã¿ããŠæŽæ°ããã¿ã€ãã³ã°ãããããŸãã ããã«ãããããªãã¶ãŒããŒãã€ã³ã¿ãŒãã§ã€ã¹ãå®è£ ããããšãé€ããŠãããã«é¢é£ä»ãããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã«ã€ããŠäœãç¥ããªããã»ãŒç¬ç«ããã¢ãã«ãåŸãããŸãã
ã3ããã¥ãŒãšã³ã³ãããŒã©ãŒãžã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®åé¢ã
3çªç®ã®ã¢ã€ãã¢ã¯ãåçŽã«éå±€åè§£ã®2çªç®ã®ã¹ãããã§ãã ã¢ããªã±ãŒã·ã§ã³ãããžãã¹ã¢ãã«ãšã€ã³ã¿ãŒãã§ã€ã¹ã«æåã«åé¢ããåŸã次ã®éå±€ã¬ãã«ã§åè§£ãç¶è¡ããããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãViewãšControllerã«åå²ãããŸãã
ãã®éšéã®æ¬è³ªãçè§£ããããã«å¿ããŠèª¬æã§ãã人ã¯ã»ãšãã©ããªããšããå°è±¡ãåããŸããã éåžžãã³ã³ãããŒã©ãŒã¯ãŠãŒã¶ãŒã®ã¢ã¯ã·ã§ã³ã«äœããã®åœ¢ã§å¿çããæšæºã®åçåãããå®åŒåã®ã¿ãæäŸãããã¥ãŒã¯ã¢ãã«ã衚瀺ããŸãïŒãããã£ãŠãã»ãšãã©ã®å®è£ ã§ã¯ããã¥ãŒã¯ã¢ãã«ã®å€æŽã®éç¥ã«ãµãã¹ã¯ã©ã€ãããŸããäžç·ã«ã³ã³ãããŒã©ãŒïŒã
ãã¥ãŒãšã³ã³ãããŒã©ãŒãžã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã®åå²ã¯ã éå±€ã®ç¬¬2ã¬ãã«ã«å±ããŠããããããã¡ã€ã³ã¢ãã«ãšã€ã³ã¿ãŒãã§ã€ã¹ãžã®ã¢ããªã±ãŒã·ã§ã³ã®æåã®åé¢ãããã¯ããã«éèŠã§ã¯ãããŸããã ( ) « MVC », UI-, . .
« MVC» . , , , . , . , -, " ", .
«Original MVC»: SmallTalk-80
, MVC , « » . , , ?
? «MVC-» , - ?
, , . , ( ) . , , , . , . , , , GUI, .
â , . : " A model could be a single object (rather uninteresting), or it could be some structure of objects. " â , , ?
: " , ⊠« », - , ." « ». «» , « ».
: , ( ), «» ( ) «». , , .
, « » «». , , , , . â « ». . (Dependency Inversion Principle). â .
, , .
:
: MVC , , , « », , «Editor» ().
, MVC , â ( ), ( ). «MVC » ( ), .
, ( ), , . - , , , . , , ⊠, -, , . .
MVC, :
. . / . , , . .
- , -. , ( ), . ( Provided Interface ) ( RequiredInterface ).
,
( Interface Segregation Principle ) ProvidedInterface RequiredInterface .
, . , â â An API Gateway is a server that is the single entry point into the system. It is similar to the Facade pattern from object-oriented design. The API Gateway encapsulates the internal system architecture and provides an API that is tailored to each client . â Building Microservices: Using an API Gateway .
" API, API (Rather than provide a one-size-fits-all style API, the API gateway can expose a different API for each client. For example, the Netflix API gateway runs client-specific adapter code that provides each client with an API that's best suited to it's requirements) " API Gateway .
- SmallTalk-80. - MVC :
⊠(glue), , , , ⊠/ .
, . - ( "Interface-Based Programming Techniques").
- JavaGuru â Advanced MVC Patterns . , , /-/ (Models as Proxies, Models as Filters), , â , : â , , . !.. - â.
- , original MVC, «», . « », .
â " ?". MVC â «-» .
? , . ããããããã¯çè«äžã§ãã - . â « » «GUI » ( ).
, Smalltalk. Smalltalk-80 . ( « » ) , , .
( SmallTalk) /, . - ( ) SmallTalk-80.
, Smalltalk GUI : Inspector, Browser, Workspace,âŠ
Glenn Krasner:
"Inspector . ListView (), TextView ()⊠« Inspector »⊠« Inspector » . View " actual " models ...
Inspector, . « Browser » - ... "
: -, -, . Inspector « Inspector », Browser â « Browser ».
Workspace, " StringHolder, , ".
Krasner SmallTalk ( Model): StringHolder , Browser , Inspector , FileModel , Icon ⊠" the models were almost always some sort of filter class ".
VisualWorks Smalltalk Holder- . , , â ValueModel ValueHolder. , , ValueModel , GUI « » .
:
, " MVC" - GUI - . Front-Controller ApplicationModel, ViewModel ( . Model-ModelView-Controller ) Proxy-model .
- , «», , . - -.
ããšãã°ãValueHolderã¯éåžžãæ¢åã®ãã¡ã€ã³å€æ°ã®åãªãã©ãããŒã§ããããŒã¿ãå«ããã¹ãã§ã¯ãªããããŒã¿ãžã®ãªã³ã¯ãå«ããå¿ èŠããããŸãã ãããã¯æ¬¡ã®ãšããã§ããã ValueModelã¯ãå¥ã®ã¢ãã«ã«ãã£ãŠæ¢ã«æ ŒçŽãããŠãããããå®éã«å€ãæ ŒçŽããå¿ èŠã¯ãããŸãã ãïŒ ValueModelã®çè§£ãšäœ¿çš ïŒã
Advanced MVC Patternsã®èšäºããã®åŒçšã§ãïŒã Swingã³ã³ããŒãã³ãã䜿çšãããšãã«ããããééãã®1ã€ã¯ããããã®Swingã³ã³ããŒãã³ãã®ã¢ãã«ã«ããŒã¿ãã³ããŒããããšã§ããæ£ããæ¹æ³ã¯ãæ¢åã®ããŒã¿ã䜿çšãããã£ã«ã¿ãŒ...èŠããŠãããŠãã ããïŒåã«è§£éã§ããããŒã¿ãã³ããŒããªãã§ãã ããïŒ "
次ã®ç°¡åãªäŸãèããŠã¿ãŸãããã ã€ã³ã¿ãŒãããã®ãã³ãã«åŸã£ãŠã次ã®ãããªã³ãŒãïŒStackOverflowããã³JListã®ã¢ã€ãã ã®è¿œå ãšåé€ããååŸ ïŒã䜿çšããŠããªã¹ãã«ã¢ã€ãã ã远å ããããšããŸã£ããåãããŒã¿ããªã¹ãã¢ãã«ã«ã³ããŒãããŸãã
Object[] items; // DefaultListModel model = new DefaultListModel(); JList list = new JList(model); for (int i = 0; i < items.length; i++){ // ! model.addElement(items[i]); }
, , ListModel ( AbstractListModel):
// - , // ListModel model = new AbstractListModel() { public int getSize() {return items.length;} public Object getElementAt(int index) {return items[index];} }; // JList list = new JList(model);
, - , . -
Object[] items1; Object[] items2; // // - ListModel model = new AbstractListModel() { public int getSize() { return items1.length + items2.length;} public Object getElementAt(int index) { return index<items1.length ? items1[index] : items2[index-items1.length]; } }; JList list = new JList(model);
. , ( ).
, :
JList list = new JList(items);
- .
: GUI-
, .
: «MVC »
- «» . - , , .
- (, , ) , . : "model object with a façade that reflects the userâs mental model".
MVC «», « » . (" ?", â ?â), .
MVC , : . //..., ( ) . â .
æŠããŠããã®äžéãªããžã§ã¯ããã©ã®çšèªãšåŒã°ããã©ã®Model-View-Whateverã¿ã€ãã®MVCã䜿çšãããŠãããã¯ãŸã£ããåãã§ãã
ååãšããŠããã®èšäºã¯å®äºã§ããŸããæ¢ã«è¿°ã¹ãããã«ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ãViewãšControllerã«åå²ããããšã¯ãæãéèŠã§ã¯ãªããè£å©çãªç¬éã§ããããããäžæ¹ã§ããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹ã¯ãã¹ãŠã®ãŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ã«ååšãããã®åéã§éçºãããã¢ãããŒããã¢ã€ãã¢ã®ã¢ã€ãã¢ãæã£ãŠãããšäŸ¿å©ã§ããããã«ãäž»èŠãªè°è«ãè¡ãããŠããã®ã¯ã³ã³ãããŒã©ãŒã§ãããããã£ãŠ-2 çªç®ã®éšåã¯ããã®ãããã¯å°çšã§ãã