æ¬è¨äºã¯
2022年度 æ°äººåæ¥è¨å¿µWeek
5æ¥ç®ã®è¨äºã§ãã
ð¸
4æ¥ç®
â¶â¶ æ¬è¨äº â¶â¶
6æ¥ç®
ð

- ã¯ããã«
- Abstract Factoryã¨ã¯
- Abstract Factoryãã¿ã¼ã³ã®ã¡ãªããã»ãã¡ãªãã
- 使ç¨ä¾
- æå¾ã«
ã¯ããã«
æ°äººåæ¥ã¦ã£ã¼ã¯5æ¥ç®ãæ å½ããæ°äºç¿å¤ªã§ãã ãã®ããã°ãæ¸ãã«ããã£ã¦ãæ¥åä¸ã®ä¼è©±ã§AbstractFactoryã¨ããè¨èãåºã¦ããã¨ãã«èªåã®ä¸ã§ã¼ãããã¨ããã¤ã¡ã¼ã¸ãã¤ãããä¼è©±ã«ã¤ãã¦ãããªãã£ããã¨ãæãåºãããã®ãã¼ãã«æ±ºãã¾ãããéçºè éã§ã®ä¼è©±ã«ãã¶ã¤ã³ãã¿ã¼ã³ãåºã¦ãããã¨ãããã¨æãã®ã§ãç¥èã®å®çã¨ããæå³ã§ãã®è¨äºãæ¸ãã¾ããã
Abstract Factoryã¨ã¯
Abstract Factoryã¨ã¯ãªãã¸ã§ã¯ãã®çæã«é¢ãããã¶ã¤ã³ãã¿ã¼ã³ã®ã²ã¨ã¤ã§ããªãã¸ã§ã¯ãç¾¤ãæ½è±¡ã¯ã©ã¹ã使ç¨ãã¦çæãã¾ãã ä¸è¬çã«ä¸è¨ã®ãããªã¯ã©ã¹å³ã§èª¬æããããã¨ãå¤ãã¨æãã¾ãã

Appã¯ã©ã¹ãå¼ã³åºããããªãã¸ã§ã¯ã群ã¯AbstractProductAã¯ã©ã¹ãAbstractProductBã¯ã©ã¹ã®äºã¤ã®æ½è±¡ã¯ã©ã¹ã§ããããã®äºã¤ãå®è£ ãã¦ããã®ãImplemetProductAã¯ã©ã¹ãImplemetProductBã¯ã©ã¹ã§ããããã¦ããã®ã¤ã³ã¹ã¿ã³ã¹ãçæããå½¹å²ã®ã¯ã©ã¹ãAbstractFactoryã¨ImplementFactoryã¯ã©ã¹ã§ããFactoryã¯ã©ã¹ã®makeï½ã¡ã½ããã§ããããã®ã¤ã³ã¹ã¿ã³ã¹ãçæããããã«å®è£ ãã¾ããããã§æ³¨ç®ãã¹ãç¹ã¯ããããæ½è±¡ã¯ã©ã¹ãéãã¦å ·è±¡ã¯ã©ã¹ã«ã¢ã¯ã»ã¹ãã¦ããç¹ã§ãããããããã¨ã§å¼ã³åºãå ã®ã¯ã©ã¹ã§ã¯å ·è±¡ã¯ã©ã¹ã®å·®ç°ãæãããã¨ãªã使ç¨ãããã¨ãåºæ¥ã¾ãã
å¼ã³åºãå ã®Appã¯ã©ã¹ã§ã¯ä»¥ä¸ã®è¨è¿°ã®ããã«Factoryã¯ã©ã¹ãçµç±ãã¦AbstractProductAã¯ã©ã¹ã¨AbstractProductBã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ãçæãã¾ãã
AbstractFactory factory = new ImplementFactory();
AbstractProductA productA = factory.makeAbstractProductA();
AbstractProductB productB = factory.makeAbstractProductB();
Abstract Factoryãã¿ã¼ã³ã®ã¡ãªããã»ãã¡ãªãã
ã¡ãªãã
- ç¾ç¶ã®ã³ã¼ããå¤ãããã¨ãªãæ¡å¼µãããã¨ãåºæ¥ãã
æ°ãããªãã¸ã§ã¯ã群ã追å ããå ´åã§ãç¾ç¶ã®ã³ã¼ãã夿´ãããã¨ãªãå®è£ ãããã¨ã容æã«ãªãã¾ããå ã®å³ã§ããImplementFactoryã¯ã©ã¹ãImplemetProductAã¯ã©ã¹ãImplemetProductBã¯ã©ã¹ã®ãããªå ·è±¡ã¯ã©ã¹ã®è¿½å ã§å¯¾å¿ãããã¨ãåºæ¥ã¾ãã
- ä¾åã®åãã夿´ã§ãã
ãã®ãªãã¸ã§ã¯ã群ã使ç¨ããå¼ã³åºãå ã®ã¯ã©ã¹ããã¯å ·è±¡ã¯ã©ã¹ãè¦ããã¨ã¯ãªãã®ã§ãProductAãProductBã®å¤æ´æã«Appã¯ã©ã¹ã«åã¼ãå½±é¿ãå°ãªããªãã¾ãã
ãã¡ãªãã
- ãªãã¸ã§ã¯ãç¾¤ã®æ°ã種é¡ã夿´ããã夿´ã«å¼±ã
ä¸è¨ã®å³ã§è¨ãæã®AbstractFactoryã®makeProductAãªã©ã®çæãããªãã¸ã§ã¯ãã®æ°ã墿¸ãããããªä¿®æ£ã«å¼±ãã§ããæ½è±¡ã¯ã©ã¹ã夿´ããã¨ç¾ç¶ã®ã³ã¼ããã¹ã¦ã«å½±é¿ãåºãããããã®ãããªä¿®æ£ãå ¥ããããªå ´åã¯AbstractFactoryãã¿ã¼ã³ã使ãã¹ãã§ã¯ãªãã¨è¨ãã¾ãã
- å®è£ ãè¤éã«ãªã
ã¯ã©ã¹å³ã®éããæ½è±¡ã¯ã©ã¹ã¨å ·è±¡ã¯ã©ã¹ã使ç¨ãã¦ããã®ã§ãé©åãªå ´é¢ã§ä½¿ç¨ããªãã¨ãä¸å¿ è¦ã«å®è£ ãè¤éåããã ãã«ãªã£ã¦ãã¾ãã¾ãã
使ç¨ä¾
ä¾ã¨ãã¦ãæåºå ãã¨ã«ã¬ãã¼ãå½¢å¼ãåºåæ¹æ³ãç°ãªãã¬ãã¼ãã¢ããªã使ããã¢ããªã±ã¼ã·ã§ã³ãèãã¾ãã ãã®ã¬ãã¼ãã®æåºãããããã«ã¯ã¬ãã¼ãã¨åºåã®å¦çãå¿ è¦ã§ããããã®å¦çã¯ããããæåºå ã«åããã¦ã«ã¹ã¿ãã¤ãºããå¿ è¦ãããã¨ãã¾ãã ãã®ã¨ãAbstractFactoryãã¿ã¼ã³ã使ç¨ããã¨ä»¥ä¸ã®ãããªã¯ã©ã¹å³ã§èãããã¾ãã

Reportã¯ã©ã¹ã¯ã¬ãã¼ãã使ããExportã¯ã©ã¹ã¯åºåãè¡ãã¯ã©ã¹ã§ããããããå®è£
ãã¦ããã®ãç¹ç·ããä¸ã«è¨è¼ããã¦ããReportAã¯ã©ã¹ãExportAã¯ã©ã¹ã§ãã
å¼ã³åºãå
ã®Appã¯ã©ã¹ã§ã¯çæããå
·è±¡ãã¡ã¯ããªã¼ã¯ã©ã¹ï¼ReportAFactoryãReportBFactoryï¼ã鏿ããã ãã§ãã®å¾ã®æåºå
Aã®å¦çãæåºå
Bã®å¦çãåãè¨è¿°ã§è¡ããã¨ãåºæ¥ã¾ãã
ãããããã§ãæ°ããªæåºå
ã®Cã追å ããå¿
è¦ããã£ã¦ãã以ä¸ã®ããã«æåºå
Cã«å¯¾å¿ããå
·è±¡ã¯ã©ã¹ãå®è£
ãããã®ãã¡ã¯ããªã¼ã¯ã©ã¹ãçæããã ãã§ãã¨ã¯æåºå
AãBã¨åæ§ã®ã³ã¼ãã使ã£ã¦å¦çãããã¨ãåºæ¥ã¾ãã

以ä¸ã®ããã«ãå·®ç°ã®ããé¨åãå¤ã«åºããã¨ã§ã·ã¹ãã ã®ä¸å¿çãªã³ã¼ããå¿ è¦ä»¥ä¸ã«è§¦ããã¨ãªãæ¡å¼µãããã¨ãåºæ¥ã¾ãã
æå¾ã«
AbstractFactoryãã¿ã¼ã³ã¯æ¿«ç¨ããã°ä¸å¿ è¦ã«å®è£ ãé£ããããä¿®æ£æã®å½±é¿ãåºãã£ã¦ãã¾ãã®ã§ä½¿ç¨ããéã¯æ³¨æããå¿ è¦ãããã¾ãã ããããç¥èã¨ãã¦èãã¦ããã ãã§ãä»ã®äººã®ã³ã¼ããèªãã æã«çè§£ãããããªããªã©æå³ã¯ããã®ã§ã使ãããªããã¨ãç¥ã£ã¦ããã¦æã¯ãªãã¨æãã¾ããã