ãœãããŠã§ã¢ ã¢ãŒããã¯ãã£ãšãã¿ãŒã³ã®ã³ã³ããã¹ãã§ã¯ããæœè±¡ãã¡ã¯ããªãã®æŠå¿µã¯ãå ·äœçãªã¯ã©ã¹ãæå®ããããšãªããé¢é£ãªããžã§ã¯ããŸãã¯äŸåãªããžã§ã¯ãã®ãã¡ããªãŒãäœæããããã®ã€ã³ã¿ãŒãã§ã€ã¹ãæäŸããèšèšãã¿ãŒã³ãæããŸãããã®æ¹æ³ã¯ããªããžã§ã¯ããäœæããããŸããŸãªæ§æã§çµã¿åãããå¿ èŠãããè€éãªã·ã¹ãã ãæ±ãå Žåã«ç¹ã«åœ¹ç«ã¡ãŸãã Abstract Factory ãã¿ãŒã³ã¯ããªããžã§ã¯ãäœæã®ããã»ã¹ãæœè±¡åããããšã§ãã¢ãžã¥ãŒã«æ§ãççµåãã³ãŒãã®åå©çšæ§ãä¿é²ããŸããããã«ãéçºè ã¯æ°ãããªããžã§ã¯ã ãã¡ããªãäœæãããœãããŠã§ã¢ ã·ã¹ãã å šäœã§ããå¹ççãã€äœç³»çã«å®è£ ã§ããããã«ãªããŸãã
Abstract Factory ãã¿ãŒã³ã®æ©èœã¯ãäž»ã«ããªã¢ãŒãã£ãºã ã®äœ¿çšã«ãã£ãŠå®çŸãããŸããããã«ããã1 ã€ã®ã€ã³ã¿ãŒãã§ã€ã¹ãŸãã¯ã¹ãŒããŒã¯ã©ã¹ãè€æ°ã®å ·è±¡ã¯ã©ã¹ã衚çŸã§ããããã«ãªããŸããç°ãªãã¯ã©ã¹éã®ããªã¢ãŒãã£ãã¯ãªé¢ä¿ãå®è£ ããããšã«ãããAbstract Factory ãã¿ãŒã³ã¯ã䜿çšãããã³ã³ããã¹ãã«åºã¥ããŠããŸããŸãªå ·è±¡ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŠè¿ãããšãã§ããŸããããã«ãããã·ã¹ãã å šäœã«ã¬ãã«ã®æœè±¡åãšäžè²«æ§ãæäŸãããè€éãªãœãããŠã§ã¢ ãœãªã¥ãŒã·ã§ã³ã®éçºãä¿å®ã倿Žã容æã«ãªããŸãã
çŸä»£ã®ãœãããŠã§ã¢éçºå®è·µã§ã¯ãæœè±¡ãã¡ã¯ããªã¯ããªããžã§ã¯ã ãã¡ããªãçæããã³ç®¡çã§ãããããæè»æ§ãšã¹ã±ãŒã©ããªãã£ãå¿ èŠãšããã·ã¹ãã ã§äžè¬çã«èŠãããŸãããããã®ã·ã¹ãã ã¯ãå€ãã®å Žåãè€éãªããžãã¹ ãã¡ã€ã³ãé«åºŠãªæœè±¡åãå³ããæéã«å¯ŸåŠãããããéçºè ã«ãšã£ãŠå¿ èŠãªãªããžã§ã¯ãã®äœæãšç®¡çãå°é£ã«ãªãå ŽåããããŸãããã®ãããªã·ã¹ãã ã®äŸãšããŠã¯ãããŒã¿ ã¢ãã«ãããžãã¹ ããã»ã¹ãREST APIãããã³ WSS endpointsèŠèŠçã«äœæããããšã«ãã£ãŠãããã¯ãšã³ããWebãããã³ã¢ãã€ã« ã¢ããªã±ãŒã·ã§ã³ãçæããAppMasterno-codeãã©ãããã©ãŒã ããããŸããã¢ããªã±ãŒã·ã§ã³ã®ããŸããŸãªã³ã³ããŒãã³ããçæããããã®ãã®ãµããŒãã«ãããAbstract Factory ãã¶ã€ã³ ãã¿ãŒã³ã¯ãœãããŠã§ã¢ ã¢ãŒããã¯ãã£ã®éèŠãªæ§æèŠçŽ ãšããŠæ©èœããŸãã
ãœãããŠã§ã¢ ãœãªã¥ãŒã·ã§ã³ãè€æ°ã®ããŒã¿ããŒã¹ç®¡çã·ã¹ãã (DBMS) ãäžè²«ããŠåäœããå¿ èŠãããã·ããªãªãèããŠã¿ãŸãããããã®å ŽåãAbstract Factory ã䜿çšããŠãPostgreSQLãMySQLãOracle ãªã©ã®ããŸããŸãª DBMS å®è£ ã®å ±éã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸ©ãããªããžã§ã¯ã ãã¡ããªãäœæã§ããŸãããã®ã¢ãããŒãã«ããããªããžã§ã¯ãã®äœæãšã«ã¹ã¿ãã€ãºãåçåãããåæã«ã·ã¹ãã ã®ççµåæ§ãæ¡åŒµæ§ãä¿å®ã®å®¹æãã確ä¿ãããŸãã
Abstract Factory ãã¿ãŒã³ãå®è£ ããå ŽåãããŸããŸãªèšèšååãäžå¯æ¬ ã§ãããã¿ãŒã³ã®ã¢ãŒããã¯ãã£ã¯éåžžãAbstract Factory InterfaceãConcrete Factory ã¯ã©ã¹ãAbstract Product ã¯ã©ã¹ãããã³ Concrete Product ã¯ã©ã¹ã® 4 ã€ã®äž»èŠãªã³ã³ããŒãã³ãã§æ§æãããŸãã Abstract Factory ã€ã³ã¿ãŒãã§ã€ã¹ã¯ãªããžã§ã¯ãã®ãã¡ããªãŒãäœæããããã®ã¡ãœãããå®çŸ©ããå Concrete Factory ã¯ã©ã¹ã¯ãããã®ã¡ãœãããå®è£ ããŠç¹å®ã®ãªããžã§ã¯ã ãã¡ããªã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã Abstract Product ã¯ã©ã¹ã¯ãåãã¡ããªãŒã®å ±éã€ã³ã¿ãŒãã§ã€ã¹ãå®çŸ©ããããã®ããŒã¹ãšããŠæ©èœããConcrete Product ã¯ã©ã¹ã¯ãç¹å®ã®ãªããžã§ã¯ã ãã¡ããªã®ããããã£ãšåäœãå®è£ ããŸãã
å€ãã®å ŽåãAbstract Factory ãã¿ãŒã³ã¯ãæé©ãªåäœã確ä¿ããããã«ãSingleton ã Factory Method ãªã©ã®ä»ã®ãã¿ââãŒã³ãšäœµçšããŠäœ¿çšãããŸãã Singleton ãã¿ãŒã³ã䜿çšãããšãAbstract Factory ã 1 ã€ã®ã€ã³ã¹ã¿ã³ã¹ã«å¶éã§ãããªããžã§ã¯ãã®äœæãšç®¡çã®ããã®éäžãã€ã³ããæäŸã§ããŸãã Factory Method ãã¿ãŒã³ã Concrete Factory ã¯ã©ã¹å ã§äœ¿çšãããšãå°çšã®ãã¡ã¯ã㪠ã¯ã©ã¹å ã§ãªããžã§ã¯ãã®äœæãã«ãã»ã«åãããšããåãèãæ¹ãå©çšããŠãåã ã®ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ãäœæã§ããŸãã
Abstract Factory ãã¿ãŒã³ã®äœ¿çšã«ã¯å€ãã®å©ç¹ããããŸãããæœåšçãªæ¬ ç¹ãããã€ããããŸãããã®ãããªæ¬ ç¹ã® 1 ã€ã¯ãã·ã¹ãã ã®è€éãããã¿ãŒã³ã«ãã£ãŠæäŸãããæœè±¡åã®ã¬ãã«ãä¿èšŒããªãå Žåã«ãªãŒããŒãšã³ãžãã¢ãªã³ã°ã®ãªã¹ã¯ãããããšã§ããããã«ãæ°ãããªããžã§ã¯ã ãã¡ããªãå°å ¥ããããæ¢åã®ãã¡ããªã®æ§é ã倿Žãããšãããã«å¿ã㊠Abstract Factory ã€ã³ã¿ãŒãã§ã€ã¹ãæŽæ°ããå¿ èŠããããããã·ã¹ãã ã«é倧ãªå€æŽãçããå¯èœæ§ããããŸãã
çµè«ãšããŠãAbstract Factory ãã¿ãŒã³ã¯ããœãããŠã§ã¢ ã¢ãŒããã¯ãã£ãšãã¿ãŒã³ã®åéãç¹ã«æè»æ§ãæ¡åŒµæ§ãã¢ãžã¥ãŒã«æ§ãå¿ èŠãšããã·ã¹ãã ã«ãšã£ãŠäŸ¡å€ã®ããèšèšãœãªã¥ãŒã·ã§ã³ã§ãã Abstract Factory ã䜿çšãããšããªããžã§ã¯ãã®äœæãšç®¡çãäžè²«ããçŽæçãªã€ã³ã¿ãŒãã§ã€ã¹ã§æœè±¡åããããããéçºè ã¯ãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹åãæ§æã®è©³çްã§ã¯ãªããããžãã¹ ããžãã¯ãã·ã¹ãã ããã©ãŒãã³ã¹ãªã©ã®ããé«ãã¬ãã«ã®é¢å¿äºã«éäžã§ããããã«ãªããŸããçµæãšããŠããã®ãã¿ãŒã³ã¯ããåªãããœãããŠã§ã¢èšèšãã³ãŒãã®ä¿å®æ§ã®åäžããããŠæçµçã«ã¯ããä¿¡é Œæ§ãé«ãå¹ççãªãœãããŠã§ã¢ ã·ã¹ãã ãä¿é²ããŸãã