é ã®äžã§èããã®åé¡âŠð
äžã®äžã倧å¢ã®æèŠã«ä¹ã£ããŠããã°ç ©ãããããšã«å·»ã蟌ãŸãããä»äºä»¥å€ã®æéãããã人ã¯å®¶æã«ããŸããã人ã¯è¶£å³ã«å²ãããšãã§ããŸãããªã®ã§ãããããç ç²ã«ããŠãŸã§äžã«éãããªããŠãã³ã»ã³ã¹ãªã®ã§ããç§ããããã£ãé¡ã®äººéãªãã§ããããããããã ãæã éåæãèŠããæããã£ãŠãã§ãæãæ°åã¯ãªãããèŠãŠèŠã¬ãµããããŠããŸããããã
ç§ã¯ããªãŒã©ã³ã¹ã§ãšã³ãžãã¢ãããŠããŸãããå æ¥ã客ããããïŒã€ã®å¥ã ã®ãä»äºãåæã«é ãããã«ãªããã©ã¡ããäžæ¹ãæãèš³ã«ããããããã©ããããâŠããšçŠã£ãŠããã®ã§ãããåŸæ¥ããã®ãããã®ãä»äºãæµããŠããŸããšãã"å¥è·¡"ãèµ·ããŸããããããåãããšã§ãïŒããã¯ãã£ãšäœããã®ç¥ã®æãå¬ãã«éããªãããšæããã§ã¯æ¥ã«ã§ããæéã§èªåã¯äœããã¹ããªã®ãïŒãšèããããã«ãªããŸããããããšãé ã®çé ã«è¿œããã£ãŠããããºã®ãã®åé¡ãã¿ãã¿ãå ã«é ã®å€§éšåãå ããããã«ãªã£ãã®ã§ãã
ç§ã®é ã§éšãåºãããã®åé¡ãšã¯ããã¯ã©ã¹ã®ç¶æ¿åé¡ãã§ãããæã«"æª"ã ãšã圢容ããããã®æ©èœã§ãã確ãã«åºåºïŒèŠªïŒã¯ã©ã¹ã«æ§ã ãªæ©èœã远å ãããå ã«æœåšãã°ãèç©ãããŠããããšããçŸè±¡ã¯ãããã話ã§ãããããã§ããã®åé¡ãäŸã«æãããç¶æ¿ã¯äœ¿ããªïŒããšãã䞻匵ãããèŠãããŸãããããŠãå¿ ããšèšã£ãŠããã»ã©ããã®è§£æ±ºçãšããŠç޹ä»ãããŠããã®ã "å§è²" ãªã®ã§ããããããç§ã¯ãã®ç¶æ¿ã®åé¡ç¹ãšãå§è²ã䜿ã£ããã®è§£æ±ºçã®ææ¡ã«çåãæ±ããŠããŸãããæãããŠãæ¬åœã«ãããªã®ã ãããããšâŠ
äžè¬çã«èšãããç¶æ¿ã®åé¡ç¹
- åºåºã¯ã©ã¹ãå€ãã®è²¬åãæã€ããã«ãªãïŒåäžè²¬ä»»ååã®éåïŒã
- åºåºã¯ã©ã¹ã®å€æŽã掟çã¯ã©ã¹ã«æãã¬åœ±é¿ãåãŒãããã倿Žã«åŒ±ãã
- 倿®µéç¶æ¿ããå Žåãæ§é ãè€éã«ãªããå šäœåã®ææ¡ãé£ãããªãã
- 掟çã¯ã©ã¹ãäœæããéãåºåºã¯ã©ã¹å éšãçè§£ããå¿ èŠãããã
ä»ã«ããããããããŸããããäžèšã§èããŠã¿ãŸãããã
-
åºåºã¯ã©ã¹ãå€ãã®è²¬åãæã€ããã«ãªãïŒåäžè²¬ä»»ååã®éåïŒã
åŸãããã³ãã³æ©èœã远å ããŠãã£ãŠãæ°ä»ãããã«ãªã¹ã«ãªã£ãŠããã£ãŠã€ãã§ãããããã¯ããã§ããå ±æããŸãããããå§è²ã䜿ãã°è§£æ±ºããåé¡ã§ããããïŒããããåäžè²¬ä»»ã®ååã®èãæ¹ããªãããã°ã©ããå§è²ã«ãããšãããåäžè²¬ä»»ã®ååã«åŸãããã«ãªãã®ã§ããããïŒãã£ãšå§è²ããå ã®ã¯ã©ã¹ã§ååããå€ããã³ãŒããæžããŠãã§ãããããããªãã°ããã®å§è²å ã®ã¯ã©ã¹ãè¥å€§åããŠããããºãã€ãŸããããã¯ç¶æ¿ã®åé¡ããšãããã ïŒã€ã®ã¯ã©ã¹ã«æ§ã ãªæ©èœãæ··åšãããŠããŸãå¥ã®åé¡ããç¶æ¿ã®åé¡ã«ããŠããŸã£ãŠãã ããã«ç§ã«ã¯èŠããŸãã -
åºåºã¯ã©ã¹ã®å€æŽã掟çã¯ã©ã¹ã«æãã¬åœ±é¿ãåãŒãããã倿Žã«åŒ±ãã
åºåºã¯ã©ã¹ã®å€æŽã掟çã¯ã©ã¹ã«åœ±é¿ãåãŒãã®ã¯ããã®éãã§ããåºåºã¯ã©ã¹ã®å€æŽãäžæ°ã«æŽŸçã¯ã©ã¹ã«åæ ãããã®ã¯ã¡ãªããã§ããäžæ¹ã掟çã¯ã©ã¹ã«ãšã£ãŠããã®å€æŽãäºæ³å€ã§ããã°æªåœ±é¿ãäžããå¯èœæ§ã¯ãããŸããããããå§è²ã§ããã°ããã®ãããªåé¡ã¯èµ·ããªãã®ã§ããããïŒããã¯åŸã§å ·äœçãªãœãŒã¹ãäŸã«ç¢ºãããŠã¿ãããšæããŸãã -
倿®µéç¶æ¿1ããå Žåãæ§é ãè€éã«ãªããå šäœåã®ææ¡ãé£ãããªãã
倿®µéç¶æ¿ãããšãéå±€ãæ·±ããªãåããã¥ããã®ã¯åãããŸããã§ã¯å§è²ã䜿ã£ãŠåãããã«æ®µã ãšæ¡åŒµããŠãã£ãå ŽåãæãããŠåãããããã®ãïŒãšããçåãæ²žãã®ã§ãã
BufferedReader reader = new BufferedReader
(
new InputStreamReader
(
new FileInputStream(file), "UTF-8"
)
);
æãJavaã®å匷ããã人ãªã銎æã¿ã®ããäŸã®ã³ãŒãã§ãããäœãç¥èããªãç¶æ ã§ãããèŠããšãããã£ããã!?ããšãªããŸããããã£ãããã®ã¢ãã¿ïŒãã¶ã€ã³ãã¿ãŒã³ãåŠã¹ã°ããããããšã®ã€ã¡ãŒãžã¯èŠããŠããŸãããã§ã¯ãã®äŸã»ã©æåã§ã¯ãªããèŠæ £ããªãã³ãŒãã§åæ§ã«å§è²ã«ããæ©èœæ¡åŒµãèŠãããå Žåããã®å éšæ§é ãæãããŠè€éã§ã¯ãªããšæããã§ããããïŒ
BufferedReaderãInputStreamReaderãå®éã«ã¯å§è²ã ãã§ãªããReaderãç¶æ¿ãã圢ããšã£ãŠããŸãããã³ã³ã¹ãã©ã¯ã¿ã§åãåã£ãŠæ©èœãæ¡åŒµããŠããã€ã¡ãŒãžãå§è²ã«ããæ®µã
ãšæ©èœãæ¡åŒµããããã«ããã¿ãªã§ããã€è¶
æåãªäŸïŒããªãæã®è©±âŠïŒãªã®ã§äŸç€ºããŸããã
- 掟çã¯ã©ã¹ãäœæããéãåºåºã¯ã©ã¹å
éšãçè§£ããå¿
èŠãããã
å®ã¯ãããç¶æ¿ã®çã®åé¡ãããããŸãããåé¡ãªã®ã¯åºåºã¯ã©ã¹ã®ãã£ãŒã«ã倿°ã掟çã¯ã©ã¹ãããã¢ã¯ã»ã¹å¯èœïŒä»£å ¥å¯ïŒã«ããå Žåã§ãã
äžè¬çã«å€æ°ã®ã¹ã³ãŒãã¯ã§ããã ãçããã¹ãã§ãããªããªãã倿°å€æŽæã®åœ±é¿ç¯å²ã屿åãããããã§ãããããããã®ååãç Žãã®ãããã®æŽŸçã¯ã©ã¹ãžãã¢ã¯ã»ã¹å¯èœãšããã±ãŒã¹ã§ãã
ã¯ã©ã¹ãäœæããæãããŒã«ã«å€æ°ã§ããã°ããã®ã¡ãœããïŒé¢æ°ïŒå ã§æ°ãä»ããã°è¯ãã®ã§ããããã£ãŒã«ã倿°ã®å Žåãã¯ã©ã¹å ã®åã¡ãœããã§å€æŽãããå¯èœæ§ãããããããã®æ±ãã«ã¯æ éã«ãªããŸãïŒããã¯ãã£ãŒã«ã倿°ãå€ãäœããããªãåæ©ãšãªããçµæçã«åäžè²¬ä»»ã®ååã«ãç¹ãããŸãïŒããããè€æ°ã¯ã©ã¹ã«æž¡ã£ãŠå€æ°å€æŽã®å¯èœæ§ãçãããšãªããšãããã¯ããã¹ãã¬ã¹ã§ãããããŸããã
ã§ã¯ãã£ã±ãç¶æ¿ã¯é¿ããã¹ããªã®ãïŒ
çµè«ãåºãåã«ããŸãç¶æ¿ãšå§è²ãæ¯èŒãããµã³ãã«ã»ãœãŒã¹ãèŠãŠã¿ãŸããããèªåè»ã§æå®ããè·é¢ãèµ°ãããå°çåãŸã§ã«çæãå°œãããã©ããããã¬ãœãªã³ãšã³ãžã³ã®å Žåãšé»æ°ã¢ãŒã¿ãŒã®å Žåãšã§æ¯èŒãããµã³ãã«ã§ãããã®ïŒã€ã®ååæºãç¶æ¿ãšå§è²ã§ããããå®è£ ããŠã¿ãŸãã
èªåè»ã®ã¯ã©ã¹ã§ããã³ã³ã¹ãã©ã¯ã¿ã§ååæºMotivePowerãåãåãããããåºã«èµ°è¡ããŸããã¡ãªã¿ã«ç©ºèª¿ãå
¥ãããã©ãããã§çè²»ãå€ããèµ°è¡è·é¢ã«åœ±é¿ããããšããã€ã¡ãŒãžã§ãã
ãŸããç¶æ¿ã®äŸã§ããã¬ãœãªã³ãšã³ãžã³ãšé»æ°ã¢ãŒã¿ãŒã®å
±éã®åºåºã¯ã©ã¹ã§ãããªãããã£ãŒã«ã倿°ã¯privateã«ããåã
ã®åç
§ã倿Žã¯ã¡ãœãããéããŠè¡ãããã«ããŠããŸãã
ã¡ãªã¿ã«injectEnergyIfPossible()ã¡ãœããã¯ãã€ããªãããšã³ãžã³åãã«çšæãããã®ã§ãïŒã¬ãœãªã³ãšã³ãžã³ã§èµ°è¡äžã«å
é»ïŒããã®èšäºã§ã¯çŽæ¥è§ŠããŸããã®ã§æªããããããã
ããã§ã¯ã¬ãœãªã³ãšã³ãžã³ãšé»æ°ã¢ãŒã¿ãŒã®å®è£ ã§ãã
åºåºã¯ã©ã¹ã§ã»ãšãã©å®è£ ãããŠããã®ã§ã黿°ã¢ãŒã¿ãŒãããŒã¿ãŒãå ¥ããæã« "é»è²»" ãèœã¡ãããããã®å®è£ ïŒãªãŒããŒã©ã€ãïŒã§ããã¡ãªã¿ã« switch åŒãèŠãŠããã£ãŠåããããã空調ã¢ãŒã㯠OFF, HEATING ã®ïŒçš®é¡ã®ã¿ã§ãã
ã§ã¯ããäžæ¹ã®å§è²ã®äŸã§ããååæºMotivePowerãã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ãšãããããå
±éçã«å®è£
ããã¯ã©ã¹MotivePowerCoreãäœæããŸãã
å
±éå®è£
ã¯ã©ã¹ãçšæããã®ã¯ãç¶æ¿ã®ã±ãŒã¹ã§åºåºã¯ã©ã¹ãå
±éå®è£
ãããŠããã®ã§ããããšæ¡ä»¶ãåãããããã§ãã
ãã¡ãããã¬ãœãªã³ãšã³ãžã³ãšé»æ°ã¢ãŒã¿ãŒã®ã¯ã©ã¹ãããããå¥ã
ã«MotivePowerãå®è£
ããŠãè¯ãã®ã§ãããå§è²ãç¶æ¿ã®åé¡ã解決ãããšã®äž»åŒµãæ£ãããã©ãããæ€èšŒããããããã®ãããªåœ¢ãåããŸããã
â»å
±éå®è£
ããªããšããšã³ãžã³ãšã¢ãŒã¿ãŒã§åãå®è£
ãéè€ããŠããŸãåé¡ããããŸãããïŒåãããŸãã¯äŒŒãããžãã¯ã忣ãããã®ã¯ãã°ã®çŽ ïŒïŒã
ããã§ã¯ã¬ãœãªã³ãšã³ãžã³ãšé»æ°ã¢ãŒã¿ãŒã®å®è£ ã§ãã
ç¹åŸŽãšããŠã¯MotivePowerCoreã«å§è²ããäžè¶³ããŠããå®è£
ãããããã®ã¯ã©ã¹ãèªãå®è£
ããŠããããããªã€ã¡ãŒãžã§ããã
以äžãç¶æ¿ãšå§è²ã®ããããã®ã±ãŒã¹ãæ¯ã¹ãŠãã©ãã§ããããïŒ å§è²ã§ã¯ã¬ãœãªã³ãšã³ãžã³ã黿°ã¢ãŒã¿ãŒãã€ã³ã¿ãŒãã§ãŒã¹å®è£ ã®ãããå šãŠã®å ¬éã¡ãœãããèšè¿°ããå¿ èŠããããŸããããã¯å·®åããã°ã©ãã³ã°ã®ç¹åŸŽãæã€ç¶æ¿ã®æ¹ã楜ã§ãïŒãã ãAIãè£å®ããŠãããã®ã§ãããã»ã©ã®ã¢ããã³ããŒãžãããªãããâŠïŒã
éèŠãªããšã¯ãæåã®æ¹ã§æããç¶æ¿ã®åé¡ç¹ã®äžã€ã§ãã "åºåºã¯ã©ã¹ã®å€æŽã掟çã¯ã©ã¹ã«æãã¬åœ±é¿ãåãŒãããã倿Žã«åŒ±ãã" ãç¶æ¿ã®ã¿ã«åœãŠã¯ãŸãåé¡ç¹ãã©ããã§ããäŸãã°ãåºåºã¯ã©ã¹ã倿Žããéã«ãã°ãæ··å
¥ãããšæŽŸçã¯ã©ã¹ã圱é¿ãåããŸããã§ã¯å§è²ã®ã±ãŒã¹ã§ã¯ã©ãã§ãããïŒMotivePowerCoreã«ãã°ãæ··å
¥ãããšãå§è²ããŠããã¬ãœãªã³ãšã³ãžã³ã黿°ã¢ãŒã¿ãŒã圱é¿ãåããã®ã§ããç¶æ¿ããå§è²ã«ããã°ã倿Žã®åœ±é¿ãåããªããã®ããã«å°è±¡ä»ãã䞻匵ãç®ã«ããããšããããŸãããããã§ã¯ãªãããšã¯åãããšæããŸããããã¯ããã§ããäœããã®ã¯ã©ã¹ã«äŸåããŠããã®ã§ããããåœç¶ãäŸåããã¯ã©ã¹ã®åœ±é¿ãåããŸãã
MotivePowerCoreãèšããã«ãã¬ãœãªã³ãšã³ãžã³ã黿°ã¢ãŒã¿ãŒãçŽæ¥MotivePowerãå®è£
ããŠããã°ãããããã¯å¥ã®ã¯ã©ã¹ã«äŸåããŠããªãã®ã§ïŒå®è£
ã®éè€ãšããåé¡ã¯ãããã®ã®ïŒãä»ã®ã¯ã©ã¹ããã®åœ±é¿ã¯ãããŸãããããã¯ççµåã§ãã蚌æ ã§ããããŸããããããå§è²ã¯ä»ã®ã¯ã©ã¹ã«äŸåããŸããäŸåããŠãã以äžãç¶æ¿ã§ææãããŠããåé¡ç¹ã解決ã§ããèš³ã§ã¯ãããŸãããããïŒ
ã€ãŸãç§ã®çµè«ãšããŠã¯ãç¶æ¿ã¯ãã£ãŒã«ã倿°ã掟çã¯ã©ã¹ã«ãŸã§å¯èŠããªããã°æåãªå ±éåã®ææ®µã§ããããšããããšã§ãïŒãããã is-a é¢ä¿ãèªããããå ŽåïŒããã¡ãããåäžè²¬ä»»ã®ååã¯ãã£ãããšèžãŸããäžã§ãã§ããåºåºã¯ã©ã¹ãåäžè²¬ä»»ã®ååããå€ãããã«ãªãã°ããã®åºåºã¯ã©ã¹ãå§è²ãããªãããŸããã®å§è²å ãæŽŸçã¯ã©ã¹ãå¥ã®å§è²ã¯ã©ã¹ã«å ¥ãæ¿ãå¯ãªæ§é ã«ããã®ãè¯ãã§ããããã€ãŸãç¶æ¿ãšå§è²ã¯ã©ã¡ããåªããŠããããšãã察ç«ã®æ§å³ã§èªãã¹ãã§ã¯ãªããããããã®ç¹æ§ãèžãŸãé©åã«äœ¿ãåããååã®é¢ä¿ãšããŠæããã¹ãã§ã¯ãªãã§ããããïŒ
ã¡ãªã¿ã«äžèšã®ãšã³ãžã³ãšã¢ãŒã¿ãŒã®å§è²ã®ãœãŒã¹ãèŠãŠããšããã£ãŒã«ã倿°ã®delegatorãsuperã«èªã¿æ¿ãããšç¶æ¿ã«ã¯ãªãœãã§ããããã®ããšãããåºåºã¯ã©ã¹ã®ãã£ãŒã«ã倿°ã掟çã¯ã©ã¹ããäžå¯èŠã«ããã°ãåºæ¬çã«ç¶æ¿ãšå§è²ã®äž¡è
ã®éã«å€§ããªå·®ã¯ãªãããšç§ã¯èããŠããŸãããšãªããš ç¶æ¿ãå£ã£ãŠããŠãå§è²ãåªããšã¯èšããªãããããªãã®ïŒæ¡ä»¶ä»ãïŒïŒ ãšããããšãªãã§ãã
å®è£ ã«äŸåãã¡ããã¡ïŒ- åºåºã¯ã©ã¹ã®è匱æ§åé¡
"åºåºã¯ã©ã¹ã®è匱æ§åé¡" ãšã¯å ã«ãæãã "åºåºã¯ã©ã¹ã®å€æŽã掟çã¯ã©ã¹ã«æãã¬åœ±é¿ãåãŒãããã倿Žã«åŒ±ãã" ã®äºãªã®ã§ãããããå°ãæ·±å ã£ãŠã¿ãããšæããŸããå®ã¯ãã®æã®èª¬æã§ããŸãçŽåŸãããµã³ãã«ã»ãœãŒã¹ãèŠãããšããªãã£ãã®ã§ãããæè¿èŠã€ããã®ã§èªåãªãã«ã¢ã¬ã³ãžããŠã¿ãŸãããã¡ãªã¿ã«åäœç¢ºèªããŠãªãã®ã§ãã€ã¡ãŒãžãæ±²ã¿åã£ãŠãã ããããšäºããæãããŠãããŸãã
public class ååæ
{
private List<å人> prisoners = new ArrayList<>();
public void å容ãã(å人 prisoner)
{
prisoners.add(prisoner);
}
public å人 è±çããã()
{
if(prisoners.isEmpty()) return null;
return prisoners.remove(0);
}
public List<å人> éå£è±çããã()
{
List<å人> jailbreakers = new ArrayList<>();
int count = prisoners.size();
for(int i=0; i<count; i++)
{
jailbreakers.add(è±çããã());
}
return jailbreakers;
}
}
public class è±çäžå¯ååæ extends ååæ
{
@Override
public å人 è±çããã()
{
var prisoner = super.è±çããã();
if(prisoner != null)
{
å容ãã(prisoner);
}
return prisoner;
}
}
ååæãç䌌çã«è¡šããã¯ã©ã¹ã§ããæŽŸçã¯ã©ã¹ã¯å人ã«éããããŠãå¿
ãæãŸããè±çäžå¯èœãªååæãªãã§ããããªãŒããŒã©ã€ãããŠããã®ã¯è±çããã()ã®ã¿ã§ãéå£è±çããã()ã¯å¯Ÿè±¡å€ã§ããããã§ããã®æŽŸçã¯ã©ã¹ãåé¡ãªãåäœããã®ã¯ãåºåºã¯ã©ã¹ã®éå£è±çããã()ã®å®è£
ãå人ã®äººæ°åãè±çããã()ãåŒã³åºããŠããããã§ãã
ããŠããœãŒã¹ã»ã¬ãã¥ãŒãåããæãååæã®éå£è±çããã()ã¯ããªã¹ãã®ã³ããŒã䜿ãã°ããã£ãšç°¡çŽ ã«å®è£
ã§ããŸããããšèšããããã«ãããšãªãã以äžã®ããã«æžãæããŸããã
public class ååæ
{
// ---------- <äžç¥> ---------- //
public List<å人> éå£è±çããã()
{
List<å人> jailbreakers = new ArrayList<>(prisoners);
prisoners.clear(); // å
šå¡è±çãªã®ã§ãå
šã¯ãªã¢
return jailbreakers;
}
}
ãã®æžãæãã«ãããè±çäžå¯èœãªããºã®æŽŸçã¯ã©ã¹ã¯éå£è±çå¯èœã«ãªã£ãŠããŸããŸãããã€ãŸããéå£è±çãã()ã®å®è£
ã§è±çãã()ãåŒã³åºããªããªã£ããããæ¡åŒµã¯ã©ã¹ã§éå£è±çããã()ãåŒã³åºããããšãéãããããæŸé¡ãšãªã£ãã¯ã±ã§ããããã
ç§ãèŠã€ããèšäºã§ã¯ããããšè¿ã圢㧠"åºåºã¯ã©ã¹ã®è匱æ§åé¡" ãè«ããããŠãããã§ãããäžç¬ããã£ããã£ãããšæãã€ã€ããããã«æ°ä»ããŸããããã®åé¡ã®æ¬è³ªã¯ã掟çã¯ã©ã¹ãåºåºã¯ã©ã¹ã®ã¡ãœããã®äžèº«ãèŠãªããäœæããäº ãªãã§ãããåºåºã¯ã©ã¹ã®éå£è±çããã()ã¯è±çããã()ãåŒã³åºããŠãããããè±çããã()ã ããªãŒããŒã©ã€ãããã°è¯ãããšããããç¶æ¿ãšèšãã©ãåã
ã¯å¥ã¯ã©ã¹ã§ããæŽŸçã¯ã©ã¹ã¯åºåºã¯ã©ã¹ããªãŒããŒã©ã€ãããéãã¡ãœããã®ã·ã°ããã£ã®ã¿ã«æ³šç®ãããã®äžèº«ã®å®è£
ã«ç«ã¡å
¥ã£ãŠã¯ãããŸãããäžè¬çã«ãå¥ã¯ã©ã¹ã®ã¡ãœãããåŒã³åºããšãã«ããã®äžèº«ã®å®è£
ãåæãšããèšè¿°ãããŸããïŒã£ãŠè©±ã§ãã
ã¡ãªã¿ã«ããã®åé¡ãå§è²ã§åé¿ããã«ã¯ååæãã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ãããã®ããã©ã«ãå®è£
ãäœæããäžã§ãè±çäžå¯ååæããããã©ã«ãå®è£
ãåŒã³åºããŸããã€ã¡ãŒãžãšããŠã¯ä»¥äžã§ãã
public interface ååæIF
{
void å容ãã(å人 prisoner);
å人 è±çããã();
List<å人> éå£è±çããã();
}
public class ååæ implements ååæIF
{
private List<å人> prisoners = new ArrayList<>();
@Override
public void å容ãã(å人 prisoner)
{
prisoners.add(prisoner);
}
@Override
public å人 è±çããã()
{
if(prisoners.isEmpty()) return null;
return prisoners.remove(0);
}
public List<å人> éå£è±çããã()
{
List<å人> jailbreakers = new ArrayList<>(prisoners);
prisoners.clear(); // å
šå¡è±çãªã®ã§ãå
šã¯ãªã¢
return jailbreakers;
}
}
public class è±çäžå¯ååæ implements ååæIF
{
private ååæ prison = new ååæ();
@Override
public void å容ãã(å人 prisoner)
{
prison.å容ãã(prisoner);
}
@Override
public å人 è±çããã()
{
var prisoner = prison.è±çããã();
if(prisoner != null)
{
prison.å容ãã(prisoner);
}
return prisoner;
}
@Override
public List<å人> éå£è±çããã()
{
var jailbreakers = prison.éå£è±çããã();
jailbreakers.forEach(jailbreaker -> å容ãã(jailbreaker));
return jailbreakers;
}
}
å°ãé·ããªããŸããããè±çäžå¯ååæãã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£
ãå¿
é ã«ãªã£ãŠããããšããã€ã³ãã§ãããéå£è±çããã()ãå¿
ãå®è£
ãå¿
èŠã«ãªãã®ã§ãååºã®ãããªåé¡ã¯èµ·ããŸããïŒéã«èšããšãå§è²ã§ãã£ãŠãã€ã³ã¿ãŒãã§ãŒã¹ãç¡ããšåãåé¡ãçãåŸãŸãïŒãç¶æ¿ã®å Žåãšæ¯ã¹ãã©ã¡ããè¯ãããã®å€æãç§ã¯ããŸãããããã ããããã£ãŠåºåºã¯ã©ã¹ã®è匱æ§ãšèšãããŠããªããã£ãŠæããŸãããªããªãããã㯠å¥ã¯ã©ã¹ã®ã¡ãœããã®å®è£
ãåæãšããã³ãŒãã£ã³ã°ãããŠããããšããåé¡ã§ãã£ãŠãããããç¶æ¿ã®åé¡ã§ã¯ãªãããã§ãã
ç¶æ¿ã®åé¡ãèªãããéããã®å€ãã¯ç¶æ¿åºæã®åé¡ã§ã¯ãªãã«ãé¢ãããããã®ããã«æ±ºãã€ããŠããå Žåãå€ãã®ã§ã¯ïŒãšããã®ãç§ã®å°è±¡ã§ãã
ã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ã䌎ããªãå§è²ããåé¡!?
ç¹ã«æ°ã«ãªãã®ã¯ãç¶æ¿ã®ä»£ããã«å§è²ïŒ ã®äž»åŒµã®äžã«ãã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ã䌎ããªãå§è²ãæ£èŠãããããšã§ãããã®ææ®µãåã£ãå ŽåãäŸãã°ä»¥äžã®ãããªãå ã ç¶æ¿ã®åé¡ç¹ãšããŠæããããŠããããªåé¡ããã£ããããŸãããã
public class èŠåå¡
{
public void èŠåã(倩å weather, å»ºç© building)
{
if(weather == 倩å.RAINY) { ã«ãããçã(); }
ç«ã¡å
¥ã(building);
}
}
public class ãã£ããèŠåå¡
{
private èŠåå¡ guard = new èŠåå¡();
private å ±åæž report;
public ãã£ããèŠåå¡(å ±åæž report)
{
this.report = report;
}
public void èŠåã(倩å weather, å»ºç© building)
{
guard.èŠåã(weather, building);
report.èŠåãå®äºå ±åãã(weather, building);
}
}
èŠåå¡ã®ãä»äºãè¶
åçŽåããäŸã§ãããèŠåããè¡ãéã«éšã®æã ãã«ãããçãŠãæå®ããã建ç©ã«å
¥ãããšããåŠçã§ãããããå§è²ã«ãã£ãŠæ¡åŒµããèŠåãåŸã«å®äºå ±åããããã£ããèŠåå¡ãäœæãããšããŸãïŒå ±åãå«ããŠèŠåããªæ°ãããŸãã⊠ããã³ãç¡çšïŒã
ããæã人æäžè¶³ãé«éœ¢åã®åœ±é¿ã§ãããããéšã®æ¥ã®èŠåãã¯ããªããŠè¯ãã«ãŒã«ã«ãªããŸããïŒç¹ã«çå¬ã®éšã¯èŸããããâŠïŒãããã§èŠåå¡ã以äžã®ããã«æžãæããŸããããã€ã³ãã¯ãæ°ãã«ã¡ãœããã®è¿åŽå€ãšããŠå®éã«å»ºç©ã«å
¥ã£ãŠèŠåã£ããã©ãããã®çåœå€ãè¿ããã倿Žããããšã§ãã
public class èŠåå¡
{
public boolean èŠåã(倩å weather, å»ºç© building)
{
var isPatrolled = switch(weather)
{
case SUNNY -> { ç«ã¡å
¥ã(building); yield true; }
case CLOUDY -> { ç«ã¡å
¥ã(building); yield true; }
case RAINY -> false;
};
return isPatrolled;
}
}
ããã§ãæŒããªããã£ããèŠåå¡ãèŠåããããã©ããã®è¿åŽå€ãåãåãããã®äžã§å ±åæžã«èšèŒãã¹ããã©ããããå€å®ããå¿
èŠããã£ãã®ã§ããã察å¿ãå¿ããŠããŸããŸãããç¡çããããŸããããã®ãŸãŸã§ãã³ã³ãã€ã«ã¯éã£ãŠããŸãã®ã§ãããâŠ2
åŸæ¥ãäºä»¶ãèµ·ããããã®éã«èŠåã£ãŠãªãã®ã«èŠåã£ããšèšé²ãããŠããããšãçºèŠããŸããçµå±ãã£ããèŠåå¡ã¯ãã£ããèŠåå¡ãšæ¶æãããæ³£ãæ³£ããã§ãŒãã¢ãŠãããŸãããšãããã
â»ãã ã©ã£ã¡ã¿ã¡ãéšã®æ¥ã®ç¯è¡ã¯èŠéãããã®ã§ããã©ãïŒãÏïŒã»ã»ã»
ãã®ã±ãŒã¹ã®åé¡ç¹ã¯ã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ãããŠããªãã£ãããšã§ããããå®çŸ©ãããŠãããªããèŠåå¡ã®ã·ã°ããã£å€æŽã§ãã£ããèŠåå¡ã¯ãã®ãŸãŸã§ã¯è¿åŽå€ããªãã®ã§ã³ã³ãã€ã«ã»ãšã©ãŒã§ãããã®æç¹ã§ãã£ããèŠåå¡ã察å¿ãå¿
èŠãªããšã«æ°ä»ããã§ãããããããŠéèŠãªã®ã¯ãããã¯ ç¶æ¿ã§ãåé¿ã§ããç¹ ã§ããåºåºã¯ã©ã¹ã®è匱æ§åé¡ã¯ "åºåºã¯ã©ã¹ã®å€æŽã掟çã¯ã©ã¹ã«æãã¬åœ±é¿ãåãŒãããã倿Žã«åŒ±ã" ã§ããããã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ã䌎ããªãå§è²ã¯ãã£ãšåŒ±ãã®ãããããŸããã
æŽã«å ãããšãèŠåå¡ããã£ããèŠåå¡ãåãèŠåå¡ãšããæ¬ãã§ãã以äžãåããã®ãšããŠæ±ãä¿éãå¿
èŠã§ãããããã®ä¿éãšãªãã®ããç¶æ¿ãã€ã³ã¿ãŒãã§ãŒã¹ã®åœ¹ç®ã§ãïŒåããã®ãšããŠç¹åŸŽä»ããã®ã¯ã¡ãœããïŒããããå®çŸ©ã«å€æŽãããå¯èœæ§ãèããã°ãé¢ä¿ããã¯ã©ã¹ã«ããã®å®çŸ©ã«åŸãããããã«ããã®ãèèŠã§ããã¯ã©ã¹ã®æ©èœã®æ¡åŒµãå§è²ã«ãã£ãŠå®çŸãããªãã°ãã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ãä»ãã®ãè¯ãã®ã§ãããïŒæéã§ãããè«ççã«ã¯ããããããšð€ïŒã
ã¡ãœããã®ã·ã°ããã£å€æŽãIDEã®ãªãã¡ã¯ã¿ãªã³ã°æ©èœã«é Œãã®ã¯æ³šæãå¿
èŠã§ããã¡ãœããå倿Žãªãè¯ãã§ãããåŒæ°å€æŽã®å Žåãã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ããŠãŠãã³ã³ãã€ã«ã»ãšã©ãŒã«ãªããªãå¯èœæ§ãããïŒåŒæ°ã®è¿œå ãšãïŒãæ¬æ¥ä¿®æ£ãã¹ã察å¿ãèŠéãããŠããŸããããããŸãããå®çŸ©ãæåã§å€æŽããããšã§ãã¯ã¶ãšã³ã³ãã€ã«ã»ãšã©ãŒãèµ·ãããã²ãšã€ã²ãšã€ç¢ºèªããªããä¿®æ£ããŠããã®ãå®å
šã§ãããã
â»å
¬éAPIã§ããã°ããã¡ãã話ã¯å¥ã
ã¡ãªã¿ã«Xcodeã¯ã¡ãœããåã®å€æŽããªãã¡ã¯ã¿ãªã³ã°æ©èœã§è¡ããšã察象ã®ã¡ãœããã«é¢ä¿ãããããªãããããã¡ãœããåããäžèŽããŠããã°ç¡é¢ä¿ãªã¯ã©ã¹ã®ã¡ãœãããŸã§å€æŽããŠããŸããŸãããªããªãã§ããããããã®ä»æ§ããã°ãšããæããªãã®ã§ããããããã仿§ã§ããã®ã¹ã¿ã³ã¹ãªãã°æ°žé ã«ä¿®æ£ãããªãã§ããããã
ãã¡ãïœð«£
å®ã¯ç¶æ¿ã®åé¡ç¹ãä»ã«ãããããšãåŸããç¥ããŸãããå°å³ã§ããéåžžã«æ©ãŸããåé¡ã§ãã
äŸãã°ããããªã±ãŒã¹ã掟çã¯ã©ã¹ã«ååšããŠããã¡ãœãããšåãã·ã°ããã£ã®ã¡ãœããïŒæœè±¡ã¡ãœããã§ã¯ãªãïŒãåºåºã¯ã©ã¹ã«åŸãã远å ããå Žåãããã¯Javaã®å Žåã ãšãã³ã³ãã€ã«ã»ãªãã·ã§ã³ãIDEã®æ©èœã§ã掟çã¯ã©ã¹åŽã®ã¡ãœããã§@Overrideã¢ãããŒã·ã§ã³ãç¡ãæšã®èŠåãåºãããšãã§ãããæŽŸçã¯ã©ã¹ã¯çµæçã«ãªãŒããŒã©ã€ãããŠããŸã£ãŠãããšã«æ°ä»ããªãã®ã§ããã€ãŸããåºåºã¯ã©ã¹ã«è¿œå ãããã¡ãœããã¯ç¡èŠãããŠå®è¡ãããŠããŸãã®ã§ãããããé¿ããã«ã¯CheckStyleçãéçè§£æããŒã«ã䜿ããããªãããã§ãããªãŒããŒã©ã€ãã®ããŒã¯ãŒãã匷å¶ããèšèªãªãåé¡ã¯ãªããã§ããã©ãããã
ãŸãšããŸãð§
èæ ®ãã¹ãããšãå€ããåœåã®äºæ³ããé¥ãã«é·ããªã£ãŠããŸããŸããããŸã è¶³ããŠãªãã®ããããã
- ç¶æ¿ã¯ãã£ãŒã«ã倿°ã®ã¢ã¯ã»ã¹æš©ã掟çã¯ã©ã¹ã«ãŸã§åºããªããã°ãã¯ã©ã¹æ©èœæ¡åŒµã®æåãªæ¹æ³
- å§è²ã¯çµå±ã®ãšããäŸåããã®ã ãããå§è²å ã¯ã©ã¹ã®å€æŽã®åœ±é¿ãåããïŒæ¬è³ªçãªåé¡ã¯ç¶æ¿ãšåæ§ïŒ
- å§è²ã§æ¡åŒµããå Žåã¯ãã€ã³ã¿ãŒãã§ãŒã¹å®çŸ©ãä»ããã®ãå
- å§è²ã䜿ããã€ã³ã¿ãŒãã§ãŒã¹ãšãã®å®è£
ã®ã¿ã§å®çŸããã®ã¯ãççµåãšãã芳ç¹ã§ã¯è¯ãããåã
ã®å®è£
ã«åãåŠçããããïŒå¯èœæ§ãããïŒãšããç¹ã§ã¯åé¡
â»ããããã€ã³ã¿ãŒãã§ãŒã¹ãšèšãã©ããã¡ãœããã®åŒæ°ãçµå床ã匷ããå¯èœæ§ãããããšã«çæ - ç¶æ¿ã§ãå§è²ã§ãã©ã¡ãã䜿ã£ãŠãã€ã€ãšæããããªããžã§ã¯ãæåã§ããéããåäžè²¬ä»»ã®ååã¯å®ãããã¹ã
ãã®åé¡ãèªãæãã®ã³ã¿ãïŒéã®åŒŸïŒã¯ããããååšããªãã§ãããããã 倿Žã®åœ±é¿ã軜æžããåªåã¯å¿ èŠã ãšæããŸãã