æè¿ã®ã¢ããªçéã§ã®ãè¨è¨ãã®éåæ
ã¢ããªçéã§ãè¨è¨ãã®è©±ãããã¨ãã« MVC / MVP / MVVM ã®ãããªãè¨è¨ãã¿ã¼ã³ãã ããèªãããããã«ãªã£ãæ°ãããã
å¾ã ã«ãã¦ããã¢ããªã®è¦æ¨¡ã«ãã£ã¦ã©ããæ¡æãã¹ããã¯å¤ãããã¿ãããªãè¶ãæ¿ããããªçµè«ã§çµãããã¨ãå¤ãã
ç§çãªçµè«
- ãè¨è¨ãã¨ããè¨è¨ãã¿ã¼ã³ãã¯å¥ç©ã ã¨æãã
- ãè¨è¨ãã®ã¬ãã«ãä¸ãããã
- ã¢ã¼ããã¯ãã£ã·ã³ããã¼ã ããæãåºãã¦ã価å¤ã®ãããã®ãä½ãããã
以ä¸ãæãã¨ããã®ã¡ã¢ã
MVC ã¯å¤ã / å£ã£ãããæ¹ãï¼
MVC 㯠Model ãã©ãæ§ç¯ãããã«ã¤ãã¦ã¨ãã«è¦å®ãã¦ããªãã
MVC ã¸ã®æ¹å¤ãããã¨ãã«ãFatVC ãæã¡åºããããã¨ãå¤ãã®ã§ãããFatVC ãå®è£ ãã¦ãã¾ãã®ã¯åã«å®è£ è ã®è½åä¸è¶³ã ã¨èãã¦ãã¦ãMVVM ãæ¡ç¨ãã¦ã FatVM ãä½ãã ãã ã¨æã£ã¦ããã
ã¾ããæ¯è¼çæ°ããã® Flux ã¢ã¼ããã¯ãã£ã¯ãè¯ãè¨ãã° MVC ã詳細åãããã®ãæªãè¨ãã° MVC ã®åçºè¦ã¨ã¿ãªããã¨ãã§ããã
VC / Activity ã GOD ã¯ã©ã¹ã§ãããã¨ããç®ãèããã®ã¯ãããªã
VC ã Activity ãã¯ãªã¼ã³ã«ãããã¨ã¯éè¦ãªãã®ã®ãããã«ç±ä¸ããããã®ã¯ãããªãã¨èãã¦ããã
VC ã Activity ã¯åä¸ã® View ã«ãããç¶æ ã®ç®¡çã¨ããããã® View å士ã®é·ç§»ã®ç¶æ ã®ç®¡çãæ ã£ã¦ããããé常ã«ããããã¨ãå¤ããã¾ãã管çãã¦ããç¶æ ãæ¥µãã¦è¤éã§ããã
ãããä¸æãæ½è±¡åãã¦ãã¿ã¼ã³ã«å½ã¦ã¯ããã¨ãã試ã¿ã夿°è¡ããã¦ãããã®ã®ãåºæ¬çã«ã¯ãã¬ã¼ããªãã§ãããæ£è§£ã¯ãªãã
ãã¨ãã¨åä½ã® VC ã Activity ã§ç°¡åã«ã§ãããã¨ãã¨ã¦ãã¨ã¦ãè¤éã«ãªã£ã¦ãã¾ãã¨ããã®ã¯ã¾ã ãã·ãªã»ãã§ãã¤ã³ã¿ã©ã¯ãã£ãç»é¢é·ç§»ã®ãããªãView ã®ç¶æ ãã¨ãé·ç§»ã®ç¶æ ãã®ä¸¡æ¹ãæ±ãæä½ã¯æ¬ è½ãã¦ãã¾ããããªã±ã¼ã¹ãããã
GOD ã¯ã©ã¹ã®å½±é¿ã使¸ããã試ã¿èªä½ã¯æ¦ã好ã¾ãããã®ã®ãããã§æ¶èãã¦ãã¢ããªã®ä¾¡å¤ãåçã«åä¸ãããã¨ã¯ãªãã®ã§ãã»ã©ã»ã©ã«å²ãåã£ã¦ä¸æãä»ãåã£ã¦ããã®ãè¯ãã¨æã£ã¦ããã
DDD ã Clean Architecture ãè¨è¨ãã¿ã¼ã³ã¨ååã«èªã
MV* ã¯å®è£ ãã§ã¼ãºãããã GUI å®è£ ã®ã¿ã«éå®ããããã¿ã¼ã³ã®è©±ã§ãããªãã¯ãã
対ãã¦ãDDD ã¯ã½ããã¦ã§ã¢è£½é å ¨ä½ã«å¯¾ããå·¨è¦çãªèãæ¹ããã¦ãããã®ã ã¨æãããClean Architecture ã¯ã¢ã¼ããã¯ãã£ãæ§ç¯ããä¸ã§ã®æéã¨ããããè¨è¨ãã¿ã¼ã³ã«å¯¾ããã¡ã¿ãªè©±ã ã¨è§£éãã¦ãã®ã§ãããã©ããªããååã§èªããããã¨ãå¤ãã®ãå人çã«ã¯ãã«ããã
ã㨠DDD ã Clean Architecture ãç¬èªè§£éï¼ã¨ãããããããã®æ å ±ãã¼ã¹ã§èªã£ã¦ããï¼ï¼ãã¨ã«ã¤ãã¦æãã¨ããããªãããã§ã¯ãªãã®ã§ãããã¾ã åèå®å ¨ã«èªãã¦ãªãã®ã§ã¨ãããããã¼ã³ã¡ã³ãã
MVVM without DataBinding
ã¾ã¨ããªãã¼ã¿ãã¤ã³ãã£ã³ã°æ©æ§ããªãã«ãé¢ããããMVVM ãæ¡ç¨ããããã¿ã¼ã³ãå¤ããèªåãããã
å¿ ãããæªãããã§ã¯ãªããã®ã®ã以ä¸ã®ãããªå¯ä½ç¨ã¯æ£è¦ãããã
- åæ¹åãã¤ã³ãã£ã³ã°ã®è¨è¿°ãã²ã©ãããã¡ãªãæ¸ãæ¹ã«ãªã
- ä¸è¡ã®ãã¼ã¿æ´æ°ã«ãã£ã¦ãªã¹ããå ¨ã¦æ¸ãæãããããªã大å¯è±ªãªå¦çãå¹³ç¶ã¨å®è¡ããã
- ã²ã¨ã¤ã®ãã¿ã³ UI ã«å¯¾ãã¦ããç¶æ ã«å¿ãããã¿ã³ã®ã©ãã«ãããã¿ã³ãå®è¡ãããã©ãããããã¿ã³ã§å®è¡ããå¦çãã®ãããªè¤æ°ã®ãã¤ã³ãã£ã³ã°ãå¿ è¦ã«ãªã
- ã³ã³ãã¤ã«ã»å®è¡æã¨ã©ã¼ãä¸è¦ªåã§ãããã°ä½æ¥ãéå¹çåãã
- ãã¼ã¿ãã¤ã³ãã£ã³ã°ã®ä½æ³ãçµ±ä¸ããã¦ããªãã®ã§ããªã¬ãªã¬ VM ãæ¨ªè¡ãã
å人çã«ãè¨è¨ããããäººã«æããã¨
è¦ä»¶ã«å¯¾ããèå³ã¨çè§£
ãè¨è¨ããããã¨ãã« GUI ãã©ããããã¿ã¼ã³ã§çµãã®ãï¼ããå ¥ãã®ã¯ãã¶ã£ã¡ãããã»ã©ç°¡åã§å ã®è¦éããã¯ã£ãããã¦ããç¶æ³ã§ããªãéãã¯ãæªæã ã¨æãã
ã©ãããè¦ä»¶ããããã©ããã£ãæ©è½ãå®ç¾ããå¿ è¦ãããã®ãï¼ã«ã¾ãèå³ãåããã¹ãã§ããã¸ãã¹ãã¸ãã¯ã»ãã¡ã¤ã³å±¤ã¨è¨ãããé åããã¾ãæ½è±¡åããUI ã DB ãªã©ã¨éé¢ãããããã¡ã§å®è£ ã§ãããï¼ã¨ããã¨ããããã£ã¨ãèè¦ã§ããããããæ¬æ¥ããã¹ããè¨è¨ããããªãã®ããªãã¨æã£ã¦ããã
ããã°ã©ãã³ã°ã®ååã®çè§£
è¨è¨ãã¿ã¼ã³ãã¢ã³ããã¿ã¼ã³ã®æ ¹åºã«ã¯å¤§ä½ããã°ã©ãã³ã°ã®ååã®èãæ¹ãæ ¹ä»ãã¦ããã
ãBaseVC ã¯ã¢ã³ããã¿ã¼ã³ã ãããã¡ãã¿ãããªã®ã¯åãªãæè忢ãªã®ã§ãã¾ã好ãã§ã¯ãªãã
ãã¨ãã°ãéæ¾ééååã®è¦³ç¹ããããã®å®è£ ã§ã¯å¤æ´ã«å¯¾ããæè»æ§ã失ã£ã¦ãã好ã¾ãããªã BaseVC ã§ãããã¨ããææãå ¥ãã¨ãå ·ä½çãªåé¡ç®æãæããã«ãªããã©ããã£ã¦ä¿®æ£ãããï¼ã¨ãã建è¨çãªè°è«ã«å ¥ããã¨ãã§ããã
è¨è¨ãã¿ã¼ã³ã«ã¯ã¨ããããæãåºã
æçµçã« GUI ãä½ã以ä¸ã¯ MVC ã MVVM ã MVP ãªã©ã® GUI ã®è¨è¨ãã¿ã¼ã³ãæ¡ç¨ãããã¨ã«ãªãã
ãã®ã¨ããäººãæ¬ãæ¨©å¨ã«ãã¦ãMVC ã¯ãã¡ããMVVM ã¯å®ã¯ãããªãã¡ãªããããã¿ããã«æµãããã ãã§ã¯ãªããèªåã§æãåããã¦å®è£ ãããªããã³ã¼ããªã¼ãã£ã³ã°ã¯ããªããã°ãªããªãã¨èãã¦ããã
ã¨ããã®ããä½ã£ããã¨ã触ã£ããã¨ããªããã®ã«å¯¾ãã¦ãã©ããæé©ããªã©ã¨ãã夿ãä¸ããã¨ãªã©ä¸å¯è½ãªã®ã§ã
ã²ã¨ã¤ã®è¨è¨ãã¿ã¼ã³ã«æåä½é¨ãæã£ã¦ãã¾ãã¨ããã®è¨è¨ãã¿ã¼ã³ãããããç¶æ³ã§éç¨ãããã®ã ã¨åéããã¦ãã¾ããã¡ã ã£ããããã®éã«ã注æãããå¿ è¦ãããã¨æãã