ãã®èšäºã®å 容
ãªããžã§ã¯ãæåã¯é£ããïŒããã£ãæ°ã«ãªã£ãŠå®è·µãããšè©°ã¿ãŸã...
ïŸïœ¬ïœ°
ãã®èšäºã¯10幎以äžãªããžã§ã¯ãæåãšæŠã£ãçè ããéåžžãšã¯ç°ãªãã¢ãããŒãã§ãªããžã§ã¯ãæåã解説ãããã®ã§ãã
çè ã¯Javaã䜿ã£ãŠæ¬æ Œçãªã·ã¹ãã éçºãããããšããããŸãããããªããžã§ã¯ãæåèšèªãšããŠæãããã¥ã©ãŒãªJavaãããŒã¹ã«ãªããžã§ã¯ãæåã«ã€ããŠè§£èª¬ãããŠããã ããŸããã
ãŸãããã®èšäºã®ç¶ç·šã«ããããŸãããªããªããžã§ã¯ãæåã¯é£ããã®ãããæŽã«2å¹Žã®æãçµãŠå·çãããŠé ããŸããïŒæ¯éãã¡ããäžèªããŠããã ãããšå¬ããã§ãã
ãªããžã§ã¯ãæåäžå€§èŠçŽ ã®è¬

ãªããžã§ã¯ãæåäžå€§èŠçŽ ã£ãŠãããŸãããããªããžã§ã¯ãæåã¯ãã«ãã»ã«åããç¶æ¿ããããªã¢ãŒãã£ãºã ãã®3ã€ã®èŠçŽ ã§æãç«ã€ãšèšãããŠããŸããæè¿ã§ã¯ããã®äžå€§èŠçŽ ãèªãããåŸåã¯èãããã§ãããäžåºŠã¯è³ã«ããããšãããã®ã§ã¯ãªãã§ããããïŒ
ãã®ããªããžã§ã¯ãæåäžå€§èŠçŽ ãã§ãããå®ã¯ãªããžã§ã¯ãæåãçè§£ãã倧ããªåŠšãã«ãªã£ãŠããŸã£ãŠããã®ã§ãã
ãªããžã§ã¯ãæåã«äžå¯æ¬ ãªã®ã¯ãããªã¢ãŒãã£ãºã ãã§ããã***ãªããžã§ã¯ãæåãè¶ ããŠéèŠãªååã¯ãã«ãã»ã«åããšãæ£ããååä»ãã***ã§ãã
ããããäžå€§èŠçŽ ã®ãç¶æ¿ããããªã¢ãŒãã£ãºã ããã«ãã»ã«åããè§£æããŠãããŸããããããããªããã«ãã»ã«åããšãæ£ããååä»ããããªããžã§ã¯ãæåãè¶ ããŠéèŠãªã®ã解説ãããŠããã ããŸãã
ããã§ã¯æ¬é¡ã«å ¥ãåã«ããªããªããžã§ã¯ãæåã§æžãã®ããšããæ ¹æ¬çãªæããç«ã¡è¿ã£ãŠã¿ãŸãããã
ãªããªããžã§ã¯ãæåã§æžãã®ã

ãªããªããžã§ã¯ãæåã§æžãã®ãèããããšã¯ãããŸããïŒæå€ã«ããã®ããšãæèããããªããšãªããªããžã§ã¯ãæåã§ããã°ã©ãã³ã°ããŠãæ¹ã¯å€ããšæããŸãã
ãªããžã§ã¯ãæåã§æžãçç±ãããã¯å€æŽã«å¯ŸããŠæè»ã«å¯Ÿå¿ããããã§ãã
ããã°ã©ã ã¯æ¥ã å€åããå¿ èŠããããŸããæŽæ°ããªããã°ããã®ããã°ã©ã ã¯æ°Žãäžããããªãæ€ç©ã®ããã«ãžã¯ãžã¯æ¯ããŠãããŸããæ€ç©ãè²ãŠãã«ã¯å®æçã«ã¡ã³ããã³ã¹ããå¿ èŠãããããã«ãããã°ã©ã ããŸãã¡ã³ããã³ã¹ãå¿ èŠã§ããGitHubãªã©ã§ãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªãæ¥ã æŽæ°ãããŠããã®ã¯ãããã°ã©ã ãæ¯ããªãããã«ããããã§ãã
ãªããžã§ã¯ãæåã«ããã¢ããªã±ãŒã·ã§ã³éçºã¯ã倿Žãããªãç®æã軞ã«ãé »ç¹ã«å€æŽãããã§ãããç®æãã¯ã©ã¹ã«æœåºããããã°ã©ãã³ã°ã¹ã¿ã€ã«ã§ãã
äŸãã°ãåºèãã©ãã©ãå¢ããŠãããã¡ãŒã¹ãããŒãã®ã·ã¹ãã ãéçºããããšã«ãªã£ããšããŸããããåºèãå¢ããŠãããšããããšã¯ãããã¯ãé »ç¹ã«å€æŽãããç®æããªã®ã§ã¯ã©ã¹ã«æœåºããŠèšèšããå¿ èŠããããŸãããããããšè¿ãå°æ¥èµ·ãããåºèãå¢ãã倿Žãã«å¯ŸããŠæè»ã«å¯Ÿå¿ã§ããããã«ãªããŸãã
äžèŠãã·ã¹ãã ã®æè»æ§ãšãããã®ã¯çŽ æŽããããã®ã«æããŸãããããæè»æ§ãåãå ¥ãããããšãéã«ã·ã¹ãã ã®ã¡ã³ããã³ã¹ãé¢åãªãã®ã«å€ããŠããŸãããšããããŸãããã®ãããæè»æ§ãšä¿å®æ§ã®ãã©ã³ã¹ã倧åã§ãã
ä»åäŸã«åãäžããã®ã¯ããã¡ãŒã¹ãããŒãã®ã·ã¹ãã ãªã®ã§ãé£å以å€ã®ãã®ã販売ããããšãããããªå€æŽãçºçããããšã¯ãããŸãèããããŸããããããããããã¬ãœãªã³ãã¿ã€ã€ã販売ãããããããªããããªããïŒå¯èœæ§ã¯ãŒãã§ã¯ãªãã®ã ããæè»ã«å¯Ÿå¿ã§ããããã«èšèšããã¹ãã ïŒããšæããããããŸãããããããå°æ¥çã«å€æŽã®ãªãç®æãç¡é§ã«æè»ã«èšèšããŠããŸãããšã¯éå°å®è£ ã§ãããã·ã¹ãã ã®èšèšãè€éãªãã®ã«å€ããŠããŸããããŸããã
ã·ã¹ãã ã«ã¯ã倿Žã®å¯èœæ§ããé«ãç®æããšãäœãç®æããšãååšãããªããžã§ã¯ãæåã¯ã倿Žã®å¯èœæ§ãäœãç®æãåå°ã«ãé«ãç®æã«æ°ãé ã£ãŠèšèšããå¿ èŠããããŸãããã®ããããªããžã§ã¯ãæåã§ã·ã¹ãã ã®èšèšããããšãã¯ãäºã倿Žãèµ·ããããã§ããããã€ã³ããåºãèŠç¹ã§äºæž¬æŽçããŠããããšã倧åã§ãã
ãªããªããžã§ã¯ãæåã§æžãã®ãïŒããã¯ãäºãé »ç¹ã«å€æŽãããã§ãããç®æãã¯ã©ã¹ã«æœåºããããšã§ãã·ã¹ãã ã倿Žã«å¯ŸããŠæè»ã«å¯Ÿå¿ã§ããããã«ãããããªã®ã§ãã
ãŸãããªããžã§ã¯ãæåã®æå€§ã®äŸ¡å€ã¯ããããããããšå©äŸ¿æ§ãã«ãããŸãããã®ããšã«ã€ããŸããŠã¯ãã®èšäºã®ç¶ç·šã«ãããããªããªããžã§ã¯ãæåã¯é£ããã®ãããã芧äžããã
ããŠããªããžã§ã¯ãæåã§ãªãæžãã®ã倧ãŸããªçç±ãããã£ããšããã§ã次ã¯ãç¶æ¿ããããªã¢ãŒãã£ãºã ããã«ãã»ã«åãã®äžå€§èŠçŽ ãè§£æããŠãããŸãïŒ
ç¶æ¿
ã¿ãªãã倧奜ãç¶æ¿ãç¶æ¿ã¯èŠªã¯ã©ã¹ã®æ©èœãåãç¶ãæ©èœã§ãããããããã¯ç¶æ¿ã®æ¬è³ªã§ã¯ãããŸããã
ç¶æ¿ã®æ¬è³ªã¯ã€ã³ã¿ãŒãã§ã€ã¹ã§ããJavaã§ã¯interfaceã䜿ã£ãŠã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸ©ã§ããŸãããç¶æ¿ããŸãã€ã³ã¿ãŒãã§ã€ã¹ãšåã圹å²ãæãããŸãã
ãªããžã§ã¯ãæåã¯é£ããã§ãããç¶æ¿ã¯ç°¡åã«çè§£ã§ããããããªããžã§ã¯ãæåãããã£ãã€ããã«ãªããŸããããã¯ããªããžã§ã¯ãæåã®æ··ä¹±ã®åå ã®ãããã§ãã
ã¯ã©ã¹ã®ç¶æ¿ãšinterfaceã®éãã¯ãç¶æ¿ã¯ã¹ãŒããŒã¯ã©ã¹ããæ©èœãåãç¶ããšããããšã§ãã
ãã®ãããç¶æ¿ã¯ã¯ã©ã¹å士ã®é¢ä¿ããAã¯Bã§ããããšè¡šçŸã§ããæã«ã¯ã©ã¹ãæœè±¡çã«ãŸãšãããããã®ãšããããšã«ãªããŸããã€ãŸãã銬ã¯åç©ã§ãããã¯OKããè«ã¯ãã³ãã§ãããã¯NGã§ãã
ãããªã®åœããåã ïŒæ¬ã«ããããæžããŠãããïŒããããã©ããã³ãŒãã®æµ·ã«æººããŠãããšä»ã®ã¯ã©ã¹ã®æ©èœã䜿ããããããã«å®æã«ç¶æ¿ããŠããŸããæ°ãä»ããããã®ãAã¯Bã§ããããšããååãç Žã£ãŠããŸãããšããããŸãã
ã²ã©ãæãªããã¯ãåã¯ã©ã¹ã§éè€ããã¡ãœãããããããã£ããªãã§ãããã§ã芪ã¯ã©ã¹ã«å®çŸ©ããç¥ã¯ã©ã¹ãåºæ¥äžããããªããžã§ã¯ãæåã§ããã°ã©ãã³ã°ããªãæ¹ãããã£ãã®ã§ã¯ïŒãšãã£ãç¶æ ã«ãªãããšããããŸãã
æœè±¡ïŒã¹ãŒããŒã¯ã©ã¹ïŒãšã¯å®æ ã®ç¡ããã ã®æŠå¿µã§ããç¬ãç«ã®é«ãåŒã£åŒµãããšã¯ã§ããŠãã誰ããåç©ããšããæœè±¡çãªãã®ã«è§Šããããšã¯ã§ããŸãããããããªããäœããã®åç©ã«è§ŠããŠããã®ãªãã°ãããã¯ãåç©ãã§ã¯ãªããç¬ãããç«ããšãã£ãããã£ãšå ·äœçãªãã®ã«ãªããŸãã
ãªããžã§ã¯ãæåã¯ææãçŸå®äžçããã®ãŸãŸããã°ã©ã ã«è¡šçŸã§ããããšèšãããŸããããã£ããããã¯ã©ãè§£éããã°è¯ãã§ããããïŒãããäœããã®ã¹ãŒããŒã¯ã©ã¹ãä¿®æ£ããå Žåããã®ä¿®æ£ãçŸå®ã«ã©ãåæ ããŠè§£éã§ããã®ã§ãããïŒ
ãã€ã®ãšãããè§£éã§ããªããšæããŸããç¡çããè§£éãããªãã°
ãã¹ãŒããŒã¯ã©ã¹ãæžãæããããšããããšã¯ãéããšãã«ãšã«ãã®éã®ãããªæœè±¡çéºäŒåæ å ±ãæäœãããããéºäŒåããããªã£ãŠãããïŒããšåªæãå±ããŠäžçãåæ§ç¯ããããšãæå³ãã
ã§ããããã
ãã£ããããã®ã©ãããçŸå®äžçãããã°ã©ã ã«è¡šçŸããªã®ã§ããããïŒïŒç¢ºãã«ã人ã¯éºäŒåæäœãå¯èœãªã£ãã®ã§ããã®ããã«çœ®ãæããŠè§£éããããšã¯ã§ãããããããŸããããããããããªè§£éã§ã¯æ··ä¹±ãæ·±ããã°ããã§ããããããããããããã«ããããããã°ã©ã ãçŸå®äžçã«åœãŠã¯ããã¯ããªã®ã«...
å®ã¯ãçåœããåãé€ãããšã§ããªããžã§ã¯ãæåã®äžçãã€ã¡ãŒãžããããããæèæ³ããããŸããããã®ã¥ãããã®äžçã«åµé ã§ããªããã®ãæã¡èŸŒããšæ··ä¹±ããã®ã§ãã
人ã¯ç¥æ§ã§ã¯ãªãã®ã§ãçŸå®äžçã§ã¢ããäœããšãã«ãè»ãããèªè»¢è»ãã¯äœããŠããç¬ãããç«ãã®ãããªçããåç©ã¯äœããŸããã人ãäœãã¢ãã¯åºæ¬çã«ãã«ã©ã¯ãªãã§ããããè»ãã¯ããšã³ãžã³ããã³ãã«ããã¬ãŒãããã€ãŒã«ããªã©ã®éšåã§æ§æãããŠããŠãæ©èœã®åãç¶ããªã©è¡ã£ãŠããŸããã
詳ããã¯ããªããžã§ã¯ãæåã«dogãanimalãæã¡èŸŒããšæ··ä¹±ãã話ããã芧ãã ããã
ç¶æ¿ã®èª¬æããªããããšããå¿ ããšèšã£ãŠããã»ã©ãç¬ãããç«ãã䜿ã£ãåç©ã®äŸã話ããªãããå®éã«DogãCatãAnimalãšãã£ãã¯ã©ã¹ãäœæããããšãããæ¹ããããšæããŸãã
ããããã·ã¹ãã ãæ§ç¯ãããšãã«äœæãããªããžã§ã¯ãã¯ããšã³ãžã³ãã¿ã€ã€ãããªéšåã§ããããããããŸãšãäžããè»ãªã©ãäœããŸãã
ç¶æ¿ã¯ã芪ã¯ã©ã¹ããæ©èœãåãç¶ãããã®ãã®ã§ã¯ãªããç¶æ¿ã®æ¬è³ªã¯ã亀æå¯èœãªããŒããäœæããããã«å ±éç¹ããèŠæ ŒããšããŠãŸãšãäžããããã€ã³ã¿ãŒãã§ã€ã¹ãªã®ã§ãã
ãããªããšãèšããšæ··ä¹±ãããŠããŸããããããŸãããããªããžã§ã¯ãæåã§ã¯ã¯ã©ã¹ãæ¡åŒµããç®çã§ç¶æ¿ãå©çšããããšãã§ããŸããããã¯ãæ¢ã«ååšããå ·è±¡ã¯ã©ã¹ã®åœ¹å²ãåŸããã€ã³ã¿ãŒãã§ãŒã¹ã®åœ¹å²ã«è»¢æããããããªããšãå¯èœã«ããŸãããèãæ¹ã¯éã£ãŠãæè¡çã«ã¯åãããšãããŠããã ãã§ã
ç¶æ¿ãæ©èœåãç¶ãã§ãªã蚌ãšããŠãç°ãªãã¯ã©ã¹ã®æ©èœãå©çšããããã«ããªããžã§ã¯ãã³ã³ããžã·ã§ã³ããå©çšãããšããæ¹æ³ããããŸããã³ã³ããžã·ã§ã³ã䜿ãã°äººãããŒããçµã¿åãããŠãè»ããäœããããªèªç¶ãªãã®ã¥ãããã§ããããå®éã«ç¶æ¿ããã³ã³ããžã·ã§ã³ã®æ¹ããã䜿ããŸãã
ã³ã³ããžã·ã§ã³ã®äœ¿ãæ¹ã¯ãäžèšã®ã³ãŒããèŠãã ãã§ããçè§£ã§ããã§ãããã
Engine engine = new JetEngine();
Handle handle = new QuickHandle();
Brake brake = new AntilockBrake();
Wheel wheel = new StudlessWheel();
Car car = new Car(engine, handle, brake, wheel);
ãã®ããã«äœã£ãæ¹ããèªç¶ãªãªããžã§ã¯ãäœããã§ããã ãã§ãªããã€ã³ã¹ã¿ã³ã¹çææã«ãšã³ãžã³ãå€ãããããã³ãã«ãå€ãããããããšã容æãšãªããããã°ã©ã ã«æè»æ§ãçãŸããŸãã
çµã¿åããããšã«å€§éã®ã¯ã©ã¹ãäœãå¿ èŠããããŸãããããäœãçµã¿åããã®ãªããžã§ã¯ããããå Žåã«ã¯ãããããçæãããã¡ã¯ããªãäœæããã°ãäœåºŠãéšåããäœãæéãçãããšãã§ããŸãã
ç¶æ¿ã¯èŠªã¯ã©ã¹ã®æ©èœãåãç¶ããŸãããããã¯éçºå¹çãäžããããã®åªããç仿§ã§ãããç¶æ¿ã®æ¬è³ªã¯ã€ã³ã¿ãŒãã§ã€ã¹ãªã®ã§ããããããªããç¶æ¿ã®æ¬è³ªããæ©èœã®åãç¶ãããšè§£éããŠããŸã£ãå Žåããªããžã§ã¯ãæåã¯ããªãã«çãå¥ãã§ãããã
ããªã¢ãŒãã£ãºã

ç¶æ¿ã®æ¬è³ªã¯ã€ã³ã¿ãŒãã§ã€ã¹ã§ãããšèª¬æããŸããããããªã¢ãŒãã£ãºã ã¯ãã®ã€ã³ã¿ãŒãã§ã€ã¹ïŒæœè±¡ïœ¥èŠæ ŒïŒã«å¯ŸããŠããã°ã©ã ãããšããããšã§ãã
ãã£ãšå
·äœçã«èšããšAnimal animal = new Dog();ãšãããAnimal animal = new Cat();ãšãããããŠãç¬ã ãããç«ã ãããåç©ã ããã£ãŠããšã§ãåç©ãšããæœè±¡æŠå¿µã«å¯ŸããŠããã°ã©ã ãããšããããšã§ãã
Animal animal = new Dog();
animal.bark(); // dog.bark();ã§ãªãããæœè±¡ã«å¯ŸããŠããã°ã©ãã³ã°ã§ããŠãã
ãã®ããã«æœè±¡ã¯ã©ã¹ã«å¯ŸããŠããã°ã©ãã³ã°ããããšã§ãæœè±¡ã¯ã©ã¹ã«å±ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯ãäœã§ãåããããšãã§ããããã«ãªããŸãã
Javaã«ãããŠã¯ã¯ã©ã¹ã®ç¶æ¿ã®ä»ã«ãinterfaceã䜿ãããšãã§ããŸããããã®interfaceã¯ãç¬ãšè»ãã鳎ã奎ãããšããæŠå¿µã§ãŸãšããŠãç¬ãè»ãã鳎ãç©ããšããŠæ±ãããšãã§ãããšãããã®ã§ããç¬ã¯ãã¯ã³ããšé³Žããè»ã¯ãã·ã£ã·ãŒããšé³ŽããŸãã
ãã®ããªã¢ãŒãã£ãºã ã®èãæ¹ã¯ããã°ã©ã ã«çãŸããŸãããäŸãã°ãé»åã¬ã³ãžã¯é£ã¹ç©ãæž©ããŠããã䟿å©ãªéå ·ã§ãããé»åã¬ã³ãžã®æ¬è³ªã¯ããã€ã¯ãæ³¢ãåºãè£ çœ®ãã§ãããã®ãã®ã®æ¬è³ªãçè§£ããŠãããšæå€ãªäœ¿ãæ¹ãã§ãããããŸããé»åã¬ã³ãžã«ãé£ã¹ç©ãæž©ãããã®ããšããå¶éã¯ãããŸãããïŒèª¬ææžã«ã¯å€ãªãã®å ¥ãããªã£ãŠæžãããŠãã ããããã©ïŒïŒ
身è¿ãªãã®ã§èšãã°ãiPhoneããŸãããªã¢ãŒãã£ãºã ã«æº¢ããŠãããšèšããŸããiPhoneã¯Appleãçºå£²åã«ã¯æ³åãããªãã£ãã¢ããªãã¢ã¯ã»ãµãªãç»å ŽããŸããã
ã³ãŒããåãããªãã¹ãæ§ã ãªäœ¿ãæ¹ãã§ããæ§ã«ãæ¬è³ªçãªãæœè±¡çãªã³ãŒããæžãããšã倧åã§ãããããŠæœè±¡ã«å¯ŸããŠäœçšããããã°ã©ã ãæ§ç¯ããã°ããªã¢ãŒãã£ãºã ïŒå€æ æ§ïŒãçãŸããŸãã
ç¹ã«æèããŠããªãã®ã«toString()ã¡ãœãããæ©èœããŠæãã¬ã¡ãã»ãŒãžãåºåãããçµéšã¯ãããŸãããïŒããã¯ããŸãã«æ³å®ããŠããªãã£ãåäœãããªã¢ãŒãã£ãºã ã«ãã£ãŠåé¡ãªãæ©èœããç¬éã§ã
ããªã¢ãŒãã£ãºã ã®çè§£ãæ·±ãŸã£ããšããã§ãèŠç¹ãå€ããŠã¿ãŸãããã
ããªã¢ãŒãã£ãºã ãæèããã³ãŒããæžãã«ã¯ãæœè±¡ãã倧åã§ãããæœè±¡ã°ããã«æ°ãåãããŠã¯ãªããŸãããæœè±¡ã«å¯ŸããŠããã°ã©ã ãããšããããšã¯ãéã«å ·è±¡ã«å¯ŸããŠããã°ã©ã ããªãããã«ãããšããããšã§ãã
ããã§è¡æçãªäºå®ããäŒãããŸãããïŒ***å®ã¯ãnewãã¯å ·è±¡ã§ãïŒ***ã§ããããããªã¢ãŒãã£ãºã ãæèããäžã§newã®æ±ãã«ã¯æå€§éã®æ³šæãæãå¿ èŠããããŸãã
å®ã¯ãnewã¯ããªã¢ãŒãã£ãºã ãç Žå£ãããšãã§ããªã奎ã§ããnewã䜿ããã«ããã°ã©ã ãåãã°è¯ãã®ã§ãããå¿
ãã©ããã§newã䜿ããªããã°ãªããªããã§ã¯ãã©ãã§newããã°ããã®ã§ããããïŒããã§ãããã¡ã¯ããªã§ãïŒ
ããªã¢ãŒãã£ãºã ã®ç Žå£ãéã蟌ããããnewãã¯ã©ã¹ã«æœåºãããšããããšã§ãïŒã€ãŸãã以äžã®ããã«ããŸãã
Animal animal = animalFactory.create('dog');
animal.bark();
äžèŠnew Dog();ãé åãã«å®è£
ããã ããããªããïŒãšæããããããŸãããããã®é åããéèŠã
ãã¡ã¯ããªã®å
éšã§ã¯new Dog();ãè¡ãªãããŠããããanimal倿°ã«ã¯Dogã€ã³ã¹ã¿ã³ã¹ã代å
¥ãããŸãããããããã¡ã¯ããªãéããŠã€ã³ã¹ã¿ã³ã¹ãååŸãããšå®æ
ã¯Dogã§ãããã®ã®Animalåã®ã€ã³ã¹ã¿ã³ã¹ãåŸãããããšãšãªããŸãããã®ãããã¡ã¯ããªã䜿ã£ãŠã€ã³ã¹ã¿ã³ã¹çæããããã°ã©ãã¯åŠãå¿ã«ãæœè±¡åºŠã®é«ãAnimalã€ã³ã¹ã¿ã³ã¹ãæ±ãããšã匷èŠãããŸãã
ãã®ãããäœãèãããšããã¡ã¯ããªã䜿ã£ãŠã€ã³ã¹ã¿ã³ã¹çæããŠããã°ãæœè±¡ã«å¯ŸããŠèªç¶ãšããã°ã©ãã³ã°ããããšãã§ããããªã¢ãŒãã£ãºã ã®ç Žå£ãå®ãããŸãã
ãããã¡ã¯ããªãå©çšããanimalFactory.create('dog');ãnew Dog();ã«ããå Žåãå°ã£ãããšã«ãã®ã³ãŒããæžããã¯ã©ã¹ã¯Dogã¯ã©ã¹ã«äŸåããŠããŸãDogã¯ã©ã¹ç¡ãã§ã¯åããªããªã£ãŠããŸããŸãã
ãããããã¡ã¯ããªãéããŠDogã€ã³ã¹ã¿ã³ã¹ãAnimalãšããŠåãåãã°ãã¯ã©ã¹ã®äŸåã¯Dogããæœè±¡ã®Animalãžã·ããããå
·è±¡ãžã®äŸåãé¿ããããŸãã
äœèšã£ãŠãã ïŒæ°ãã«Factoryã®äŸåãå¢ãããããªããïŒãšæããããããããŸããããããéèŠãªã®ã¯ãä»ã®ããã°ã©ã ã«äŸåããã¯ã©ã¹ã®æ°ãå¢ãããã§ã¯ãªããå
·è±¡ã¯ã©ã¹ã«äŸåããŠããŸããªãããã«ããããšã§ãã
ããã°ã©ã ã«ã¯ã¬ã€ã€ãŒãååšããäœã¬ãã«ã¬ã€ã€ãŒã®ããã°ã©ã ããé«ã¬ãã«ã¬ã€ã€ãŒã®ããã°ã©ã ã«äŸåãããããªããšããã£ãŠã¯ãªããŸããããããã¬ã€ã€ãŒã®ç°ãªãããã°ã©ã ãäŸåããŠããŸã£ãå Žåãæœè±¡åºŠã®é«ãããã°ã©ã ã¯ã¢ãžã¥ãŒã«æ§ãççµåæ§ãå€§å¹ ã«å€±ãããšãšãªããŸãã
èªåã®äœã£ãããã°ã©ã ãã©ã®ããã°ã©ã ã«äŸåããŠãããç°¡åã«èŠåããæ¹æ³ããããŸãã
importã§ãïŒãœãŒã¹ã³ãŒãäžéšã«ãŸãšããŠèšè¿°ãããããšã®å€ããã®importãèŠãã°ãã®ããã°ã©ã ãã©ã®ããã°ã©ã ã«äŸåããŠããããããããŸãããããŠãã¡ãããå ·è±¡ã«å¯Ÿããimportã䜿ãããŠããªãã»ã©ããã®ããã°ã©ã ã¯ççµåæ§ãé«ããšããããšã§ãããã³ãŒãã®åå©çšæ§ãããããšè¡šããŸã
ããŒïŒãã¡ã¯ããªäœããšãé¢åããïŒãšãæããããããŸãããããããå¿ ããããã¡ã¯ããªãäœãå¿ èŠã¯ãããŸãããå®ã¯ããã¡ã¯ããªããããªã«ãªã·ãåã¯ã»ãšãã©ãã¡ã¯ããªãäœæããããšããããŸããã
ããããã¡ã¯ããªã®å¿ èŠããªããããžã§ã¯ãã«ãã¡ã¯ããªãäœæããŠããŸã£ãããããã¯éå°å®è£ ã§ããåè¿°ããããã¡ãŒã¹ãããŒãã§ã¬ãœãªã³ã売ãããšãèæ ®ãããããšåãã§ãã·ã¹ãã ãè€éã«ãä¿å®ãé¢åãªãã®ã«å€ããŠããŸããŸãã
ãã®ããããã¡ã¯ããªãäœããŸã§ããªãã€ã³ã¹ã¿ã³ã¹çæã¯ã¡ã€ã³ã¯ã©ã¹ã§è¡ãããã«ããŸããããã¡ã€ã³ã¯ã©ã¹ã§newããã€ã³ã¹ã¿ã³ã¹ãä»ã®ã€ã³ã¹ã¿ã³ã¹ã«æž¡ãã®ã§ãïŒã¡ã€ã³ã¯ã©ã¹ã¯ãã¡ã¯ããªãšåæ§newã®å©çšãèš±ãããå Žæã§ãã
ãªããªããã¡ã€ã³ã¯ã©ã¹ã¯èª¿çå Žã®ãããªååšã§ãããã¡ã€ã³ã¯ã©ã¹èªäœã«ççµåæ§ãã¢ãžã¥ãŒã«æ§ã¯å¿
èŠãããŸããããã®ãããã¡ã€ã³ã¯ã©ã¹ãnewã®æ¥çå€ã§ããããã«æ±ããŠããŸã£ãŠãå°ãããšã¯ãããŸããã
ãã¡ããã¡ã€ã³ã¯ã©ã¹ãšãã¡ã¯ããªä»¥å€ã§ã
newã®å©çšãèš±ãããç®æããããŸããSceneã¯ã©ã¹ãPageã¯ã©ã¹ãRouterã¯ã©ã¹ãç¶æ¿ãããµãã¯ã©ã¹å éšãªã©ãããã«åœãããŸããããããããããµãã¯ã©ã¹ã«å¯ŸããŠãã³ã³ããžã·ã§ã³ãå©çšããŠã¡ã€ã³ã¯ã©ã¹ããã€ã³ã¹ã¿ã³ã¹ãæž¡ããæ¹ãã€ã³ã¹ã¿ã³ã¹ãåå©çšã§ãããšããã¡ãªããããããããçµå±ã®ãšããã¡ã€ã³ã¯ã©ã¹ããã¡ã¯ããªä»¥å€ã§newããããšã¯ç¡ããããããŸããããŸããStringã®ãããªèšèªã¬ãã«ã§å®è£ ãããã¯ã©ã¹ã®newã¯ççµåæ§ããŸã£ããç Žå£ããªãã®ã§æ°ã«ããªããŠè¯ãã§ã
ãŸãããã®ãããªnewããã€ã³ã¹ã¿ã³ã¹ãã³ã³ã¹ãã©ã¯ã¿ã«æž¡ããŠå©çšããææ³ã¯ãã€ã³ã¹ã¿ã³ã¹ã®ç¡é§ãªçæãçããã ãã§ãªããã³ã³ã¹ãã©ã¯ã¿ã®ãã©ã¡ãŒã¿ã確èªããã°ããã®ã¯ã©ã¹ãäœãå¿
èŠãšããŠåãã®ãäžç®çç¶ãšãªããŸããããããã®å®è£
æ¹æ³ã©ããã§èŠãããšãããŸãããïŒãããã³ã³ããžã·ã§ã³ã§ãïŒ
ãã®ããããŒãããèªåè»ãäœããããªèªç¶ãªãªããžã§ã¯ãäœããã§ããããšã«ç¹ããã ãã§ãªããæè»æ§ããæãããããšãã§ããã®ã§ãã
ããã§èšãã³ã³ããžã·ã§ã³ã¯ããªããžã§ã¯ãæ³šå ¥(Dependency Injection)ãšèšãã¹ããããããŸãããã³ã³ããžã·ã§ã³ã¯ãããã¯ã©ã¹ã«ä»ã®ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãæãããããšã§ããã®ã¯ã©ã¹ã«ååšããªãæ©èœãæãããããšãã§ãããã¯ããã¯ã§ããããªããžã§ã¯ããå€ããåçã«æ³šå ¥ããŠäœ¿ãããšãå€ãããå®è³ªDIãšåããšèšããŸããããããã³ã³ããžã·ã§ã³ã¯å³å¯ã«ãªããžã§ã¯ãæ³šå ¥ã®æå³ãå«ã¿ãŸãããä»ã§ã¯DIãšåŒã°ããããããããããçšèªãååšããããããªããžã§ã¯ãæ³šå ¥(Dependency Injection)ãšåŒãã ã»ããè¯ãããã§ãã
ã«ãã»ã«å

å®ã®ãšããã***æãéèŠãã€é£ããã®ããã®ãã«ãã»ã«åã***ã§ããã«ãã»ã«åã¯ãç¶æ¿ãããªã¢ãŒãã£ãºã ãšã¯æ¯èŒã«ãªããªãã»ã©éèŠãªãã®ã§ãã
ãããªå€§ãããªïŒãšæããããããŸããããäºå®ãã«ãã»ã«åãã¯ãªããžã§ã¯ãæåã©ãããããã°ã©ãã³ã°ãè¶ããéèŠãªååãšãªããŸããïŒåã¯ããã°ã©ãã³ã°ä»¥å€ã®åéã§ã«ãã»ã«åãšããçšèªããã䜿ããŸãïŒ
ã«ãã»ã«åã®ããšãã²ãã¿ãŒãšã»ãã¿ãŒã ãšæã£ãŠã人ãããŸãããããã¯å€§ããªééãã§ããã«ãã»ã«åãšã¯æœè±¡åã®ããšã§ãããå€ããèŠãŠãã®ãã®ãè€éã§ãªãç¶æ ãäœããšããããšã§ãããããŠãã®ç¶æ ãäœãã®ã¯ãšãŠãé£ããã®ã§ãã
åã¯èªåè»ã«è©³ãããªãã®ã§ãèªåè»ã®ã«ãã»ã«ãéãããïŒã€ãŸãè»ãåè§£ãããïŒãã©ãã©ã«ãªã£ãèªåè»ãå ã«æ»ããªããªãã§ããããããããåã¯ãããªèªåã§ã¯ç®¡çããããªãè€éãªéã®å¡ãé転ããããšãã§ããŸãããªããªãããã³ãã«ãæäœãã¢ã¯ã»ã«ãèžãã°åã«é²ããšããããšãç¥ã£ãŠããããã§ãã
ããããå°å»ã¿ã«ãã¬ãŒããèžãŸãªããã°ã¹ãªããããå°ãŸãã«ã®ã¢ãã§ã³ãžããå¿ èŠããããã«ãŒããããšãã¯åããªãããã«äœéç§»åãããªããã°åããŠããŸãèªåè»ããã£ãããåã¯ãããé転ã§ããŸãããè€éã ããã§ããããããã¬ãŒãã«ABSãæèŒããã®ã¢ã¯ãªãŒããããã¯ã§ãã«ãŒããããšãã¯åããªãããéå¿ãèšèšãããŠããã°ãããããäœèšãªããšãèããã«é転ã§ããŸãã
ã€ãŸãã«ãã»ã«åãšã¯ç¡é§ãçãæŽç·ŽãããŠãããããããã®ãäœããšããããšã§ãã
ããããšã¬ããŒã¿ãŒã«ã¢ã¯ã»ã«ãšãã¬ãŒããæèŒãããŠããããåºå€æã¯ãšã¬ããŒã¿ãŒãã®ããã³ãã·ãŒã³ã«å€ãã¬ãããæåã®æ³šæãæã£ãŠé転ããªããã°ãªããªããªããŸãããã¡ãããããã®ãšã¬ããŒã¿ãŒãã©ã€ããŒã24æéã€ãã£ããã§æäœããŠãããã®ã§ããã°ãããããããçŸåšãããç¡é§ãªåãã®ç¡ãçŽ æ©ãç§»åãæäŸããŠãããå¯èœæ§ã¯ãããŸãã
ãããããšã¬ããŒã¿ãŒãã©ã€ããŒãšããè·æ¥ã¯æ®å¿µãªããååšããŸãããã©ãããåæã®ãšã¬ããŒã¿ãŒèšèšè ã¯ããšã¬ããŒã¿ãŒãæåã§ã³ã³ãããŒã«ãããããšã¯å±éºã ãšå€æããã¢ã¯ã»ã«ãšãã¬ãŒãã®æŠå¿µãã«ãã»ã«ã®å åŽã«éã蟌ããŠãããŠãããããã§ãããã®ãããã§ãç§ãã¡ããšã¬ããŒã¿ãŒããã¿ã³ã§æäœããããšãã§ããããã«ãªããŸããã
ãã®ã«ãã»ã«åãè¡ãäžã§æèããŠãããšè¯ãããšããããŸããããã¯ã¯ã©ã¹ã®åœ¹å²ã¯äžã€ã«ãããšããããšã§ãã
ã¯ã©ã¹ã®åœ¹å²ãäžã€ä»¥äžã«ãªã£ãŠããŸããšæŽç·Žãããã«ãã»ã«åããããé¢ããŠããŸãããšã«ãªããŸããããã¯ããŒã«ã®æ æãåããããããèãããååŸãã€ããæã£ãŠããããšãããããªè©±ã«é¢é£ã¥ãããšãããããããããããŸããã
ååŸãã€ãã¯äŸ¿å©ã§ãããã³ã³ãã¥ãŒã¿ã®äžçã«ãããŠååŸãã€ãã¯å¿ èŠãããŸãããããçŸå®äžçã«ãããŠã忬¡å ãã±ãããååšãããååŸãã€ãã¯ãããªããªãã§ããããæ æããå¿ èŠãšããæã忬¡å ãã±ããããäœãåãåºãã§ããããïŒããããååŸãã€ããåãåºããŠååŸãã€ãã®æ æãã䜿ããããªããšãããã§ããããïŒçãã¯NOã§ãã忬¡å ãã±ããããã¯æ æããåãåºããŠäœ¿ããŸãã
ãã®ããã«ã³ã³ãã¥ãŒã¿ã®äžçã¯å次å ãã±ãããååšããäžçãªã®ã§ããªãã§ãã§ãã䟿å©ãªéå ·ããããäœãã§ãããæç¢ºãªéå ·ãã®æ¹ãå©äŸ¿æ§ãé«ãŸãããšã«ãªããŸããããã°ã©ãã³ã°ã®äžçã§ã¯æ¬²ããæã«æ¬²ãããã®ãæã«å ¥ããããšãã§ãããããååŸãã€ãã®ãããªè€æ°ã®ç°ãªã圹å²ãæã£ãã¯ã©ã¹ãã¢ãžã¥ãŒã«ã¯å¿ èŠãªãã®ã§ãã
ãŸããã«ãã»ã«åãšã¯çŽæ¥çãªç¹ããã¯ãªããã®ã®ãã«ãã»ã«åã«åŒ·ãé¢é£ããéèŠãªä»äžããååšããŸããããã¯ãæ£ããååä»ãã§ãã
èªåè»ã«ã¯ãèªåè»ããšããååããæ æãã«ã¯ãæ æãããšããååãä»ããããŠããŸããããããªããäœããã«ãã»ã«åããå Žåããã®ãã®ã«ãŸã ååãä»ããŠããªããªãã°ãããã«æ£ããååãã€ãããšããããšããã«ãã»ã«åã®æåŸã®ä»äžããšãªããŸãã
é©åãªååä»ãã®éèŠæ§ã«ã€ããŠã¯ãæ£ããååãä»ããããšã倧åãªçç±ãã«ãèšèŒãããŠé ããŠãããŸãã
å®ã¯ãã®ãç¡é§ãçãæŽç·ŽãããŠããããããããããšããã«ãã»ã«åã¯ãªããžã§ã¯ãæåã®ååãšããããããã¶ã€ã³ã®ååã§ãããã¶ã€ã³ãã®ãã®ãªã®ã§ãã
èŠæž¡ããŠã¿ããšã身ã®åãã«ã¯ã«ãã»ã«åããã人工ç©ã§æº¢ããŠããŸããå·èµåº«ãæŽæ¿¯æ©ãæ¯ãã©ã·ãæ¯ç£šãç²ããã¹ã¯ããã§ã¢ããã£ã¹ãã¬ã€ãã¹ããŒã«ãŒã«ã³ã³ãã¥ãŒã¿ã
ã«ãã»ã«åãšæ£ããååä»ããäœæ ãããªã«ãéèŠãªã®ã§ããããïŒããã¯ãã«ãã»ã«åããåµé ã§ãããååä»ããã¯ãåµé ããã¢ããèªèããŠãããããã«åå¥åããè¡çºã ããã§ãã
ãã¶ã€ã³ã®æ¬è³ªã¯ã人éã®ããã°ã©ãã³ã°ãã§ããã人ãå°ãããã®èšèšã«å¿ èŠãªããšã¯ç¹°ãè¿ãæèãç¶ããŠåæ ããããšã§ããåŸãããŸããããã®ãããã«ãã»ã«åãšã¯ãšãŠãæéãããããã¶ã€ã³è¡çºãªã®ã§ãã
ã«ãã»ã«åãé£ãããšæã£ãäºãªããã©ãªãŒãšããæèŠãããã ããäºããããŸãããåã¯äœã£ããã®ãæçµçã«çµå±å¿ èŠãªãã£ããšããäœéšãäœåºŠãããŠããŸãã
é£ã¹ç©ãå·ããããæããããã³ãªãå·èµåº«ã䜿ãäºãäžè¬çãªã®ã§ãå·èµåº«ã䜿ãããšããèããå³åº§ã«åºãŠããŸãããããã·ã¹ãã ã®äžçã§ã¯éžæè¢ãå€ããå³åº§ã«å®å¿ããŠäœ¿ãããã®ãæã£ãŠãããã§ã¯ãããŸããã
ããäžçã«æçãšããæŠå¿µãååšããªãã£ããšããŠãããã«ã©ããªéå ·ãçšæãããå¹çããæçã§ãããèŠã€ãåºããšããã®ã¯å®¹æãããšã§ã¯ãããŸããã
ã«ãã»ã«åãããã¢ãžã¥ãŒã«ã¯ãæéããããŠãã¶ã€ã³ããå¿ èŠããããå¢ãã§äœã£ãã¢ãã¯å€§æµæŽç·ŽãããŠããŸãããæŽç·ŽãããŠããªãéå ·ã䜿ã£ãŠæçãããšã©ããã§åé¡ãèµ·ãããæ°ããéå ·ã«åãæ¿ããå¿ èŠæ§ã«è¿«ãããããéå ·ã®ä¿®çãèŠæ±ããããããŸãã
èªå販売æ©ã§ãžã¥ãŒã¹ãè²·ã£ããåºãŠããªãããããããªãšæã£ãŠãèªå販売æ©ã®äžèº«ãéãããšãããã«ã¯è€éãªä»çµã¿ãå±éãããŸããåé¡ã解決ããã«ã¯ããã®ä»çµã¿ã調æ»ããŠä¿®çããå¿ èŠãããã人ãäœã£ãã¢ããè€éãããŠèªåã«ã¯çŽããªããšããããšã¯ãããããŸããããã販売æ©ã§ããã°ããããïŒæããïŒãã§è«Šããäºãã§ããŸãããã·ã¹ãã ã®éçºãç°¡åã«è«Šããããšã¯ã§ããŸããã
ã«ãã»ã«åã¯ãã¶ã€ã³ãã®ãã®ã§ãããæŽç·Žããããã¶ã€ã³ã¯ã©ãããŠãæéã®ããããã®ã§ããäžéå端ã«ã«ãã»ã«åãè¡ããšããã¯ããã³ãã©ã®ç®±ãäœãè¡çºãšãªãã®ã§ãã
iPhoneã䜿ãã®ã¯äŸ¿å©ã§ç°¡åã§ãããiPhoneãäœã£ããä¿®çããããšã¯èª°ããã§ãããã®ã§ã¯ãããŸãããã§ããããã«ãã»ã«ãéããªããŠæžãããæéããããŠç£šãäžããäºã倧åãªã®ã§ãã
ãŸãšã
ãªããžã§ã¯ãæåäžååã«ã¯åãããããé©åãªéèŠåºŠèªèãããªããã°å€§ããªæ··ä¹±ãæãããšãããããŸããã
ãªããžã§ã¯ãæåã«äžå¯æ¬ ãªã®ã¯ããªã¢ãŒãã£ãºã ã§ãããããªã¢ãŒãã£ãºã ã¯æœè±¡ã«å¯ŸããŠããã°ã©ãã³ã°ããããšã§çãŸããŸãããããŠãç¶æ¿ã®æ¬è³ªã¯æ©èœåŒãç¶ãã§ãªãå ±éç¹ãæœè±¡çã«ãŸãšãäžããããã€ã³ã¿ãŒãã§ã€ã¹ã§ããããããŠãæ©èœåŒãç¶ãã«ã¯ç¶æ¿ããã³ã³ããžã·ã§ã³ã䜿ããŸãã
ãç¶æ¿ãããããªã¢ãŒãã£ãºã ããšã¯ç°ãªãéèŠãªãã¶ã€ã³ã®ååãšããŠãã«ãã»ã«åããååšãããã®ã¥ããã«äžå¯æ¬ ãªã®ã¯ãã«ãã»ã«åããšãæ£ããååãä»ããã§ãã
ãªããžã§ã¯ãæåã«ãã¶ã€ã³ãæ·±ãé¢ããäºå®ãç¥ã£ãŠé©ããŠããæ¹ããããããããŸããããããããªããžã§ã¯ãæåã§ããã°ã©ãã³ã°ããã°ããã»ã©ãã©ã®ãããªã¯ã©ã¹ãäœæããŠãã©ãçµã¿åãããã®ãïŒãšãã£ãããšã§æ©ãããã«ãªããŸãã
ãããŠããããæ©ã¿ã解決ããææ³ããã¿ãŒã³åãããã®ãããã¶ã€ã³ãã¿ãŒã³ããšããŠãæžåºã«çœ®ããŠãããŸããå®ã¯ããã®ãã¶ã€ã³ãã¿ãŒã³ãåŠç¿ããŠåããŠãªããžã§ã¯ãæåããã°ã©ãã³ã°ãçè§£ã§ããããã«ãªããšåã¯æã£ãŠããŸãã
ãªããªããžã§ã¯ãæåã¯é£ããã®ãïŒããã¯ãã«ãã»ã«åããã¶ã€ã³ãã®ãã®ã§ãããæ·±ãæèãšã»ã³ã¹ããããŠæéãå¿ èŠãšãªãããã§ãã
ãã詳ãã話ã¯ããã®èšäºã®ç¶ç·šã«ãããããªããªããžã§ã¯ãæåã¯é£ããã®ãããã芧ãã ããã
ããã°ã©ãã³ã°ãšã¯ãèšãæ¹ãå€ããã°ã·ã¹ãã ãã¶ã€ã³ã§ãã
ããã°ã©ãã¯ãã¶ã€ããŒã§ããããã¶ã€ã³ãšã¯ç®çãéæããããã«ãããããããããããšããããšãåãã¡ã¯ããããããããããããã«ä»äºãããŠããã®ã§ãã
