ºÇ½ª¹¹¿·¡§
orika_ex_miyako 2023ǯ05·î03Æü(¿å) 07:43:12ÍúÎò
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Ï¡¢¥¯¥é¥¹¤ËÂФ·¤ÆÆÃÄê¤Î¥á¥½¥Ã¥É¤ä¥×¥í¥Ñ¥Æ¥£¤ò¼ÂÁõ¤¹¤ë¤³¤È¤òÍ׵᤹¤ë¤³¤È¤¬¤Ç¤¤ë¤â¤Î¤Ç¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢Ê£¿ô¤Î¥¯¥é¥¹¤ÇƱ¤¸Æ°ºî¤ò¤¹¤ë¤³¤È¤ò¶¯À©¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
»²¹Í¥µ¥¤¥È
++C++; // ̤³ÎǧÈô¹Ô C ÍÍ
¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹
¡¡¼ÂÁõ¤ÎÊýË¡¤Ï¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÄêµÁ¤¹¤ë¤¿¤á¤Î¡Öinterface¡×¥¡¼¥ï¡¼¥É¤ò»ÈÍѤ·¤Þ¤¹¡£Î㤨¤Ð¡¢¼¡¤Î¤è¤¦¤Ê¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÄêµÁ¤Ç¤¤Þ¤¹¡£
¡¡¤³¤Î¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤¹¤ë¥¯¥é¥¹¤Ï¡¢¡ÖIMoveable¡×¤ò¼ÂÁõ¤·¤Æ¡¢¡ÖMove¡×¥á¥½¥Ã¥É¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬É¬Íפˤʤê¤Þ¤¹¡£
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÇÄêµÁ¤·¤¿¥á¥½¥Ã¥É¤Ï¡¢ÌÀµ¤·¤Ê¤¯¤Æ¤â public °·¤¤¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ÎÍøÅÀ¤È¤·¤Æ¤Ï¡¢¼¡¤Î¤è¤¦¤Ê¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£
¡¡¡¦Ê£¿ô¤Î¥¯¥é¥¹¤ÇƱ¤¸Æ°ºî¤ò¶¯À©¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ ¡¡¡¦¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¤ËÂФ·¤ÆÆ±¤¸¤è¤¦¤ËÁàºî¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£ ¡¡¡¦¥³¡¼¥É¤ÎÊݼéÀ¤ò¹â¤á¤ë¤³¤È¤¬¤Ç¤¤ë¡£ ¡¡¡¦²¾Áۥ᥽¥Ã¥É¤è¤ê¤â·ÚÎ̤Ǥ¢¤ë¡£
¡¡¤³¤ì¤é¤ÎÍøÅÀ¤Ë¤è¤ê¡¢¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤òÍøÍѤ·¤¿À߷פò¹Ô¤¦¤³¤È¤Ç¤è¤ê¥¹¥Þ¡¼¥È¤Ê¥³¡¼¥É¤ò½ñ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
¡¡¥³¥Þ¥ó¥É¥Ñ¥¿¡¼¥ó¤Ï¡¢Ì¿Îá¤ò¥ª¥Ö¥¸¥§¥¯¥È¤È¤·¤Æ°·¤¦¤³¤È¤Ç¡¢ºÆÍøÍÑÀ¤ò¸þ¾å¤µ¤»¡¢´ÉÍý¤·¤ä¤¹¤¯¤¹¤ë¤³¤È¤¬¤Ç¤¤ëÀ߷ץѥ¿¡¼¥ó¤Ç¤¹¡£
¥×¥í¥°¥é¥à¤Ë¤ª¤±¤ë¥Ç¥¶¥¤¥ó¥Ñ¥¿¡¼¥ó¤Î£±¤Ä¤Ç¤¢¤ê¡¢¤³¤ÎÀ߷ץѥ¿¡¼¥ó¤Ë¤ª¤¤¤Æ¤Ï¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤¬³èÍѤµ¤ì¤Æ¤¤¤Þ¤¹¡£
¡¡²¼µ¤Ë¼ÂÁõÎã¤ò¼¨¤·¤Þ¤¹¡£
¡¡¼¡¤Ë¡¢³ÆÌ¿Îá¤òɽ¤¹¥¯¥é¥¹¤ò¼ÂÁõ¤·¤Þ¤¹¡£
Ì¿Îᤴ¤È¤Î¤Ë£±¤Ä¤Î¥¯¥é¥¹¤òÄêµÁ¤¹¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£
¡¡º£²ó¤Ï£²¤Ä¤Î¥¯¥é¥¹¤òÄêµÁ¤·¤Æ¤¤¤Þ¤¹¡£
¡¡ºÇ¸å¤Ë¡¢Ì¿Îá¤ò´ÉÍý¤¹¤ë¥¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¡¡AddCommnad ¥á¥½¥Ã¥É¤òÍøÍѤ·¡¢ICommnad ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¥ª¥Ö¥¸¥§¥¯¥È¤ò commands ¥ê¥¹¥È¤ËÅÐÏ¿¤·¤Æ¤¤¤Þ¤¹¡£
¥Ý¥¤¥ó¥È¤È¤·¤Æ¤Ï¡¢ICommnad ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤Î¥ê¥¹¥È¤Ç¤¢¤ë¤¿¤á¡¢¥¯¥é¥¹¤Ë´Ø¤ï¤é¤º¡¢ICommnad ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Æ¤¤¤ì¤Ð¥ê¥¹¥È¤ËÅÐÏ¿¤Ç¤¤ëÅÀ¤Ç¤¹¡£
¤½¤Î¤¿¤á¡¢MoveCommnad ¥¯¥é¥¹¡¢JumpCommnad ¥¯¥é¥¹¤Î¤É¤Á¤é¤Ç¤¢¤Ã¤Æ¤â commands ¥ê¥¹¥È¤ËÅÐÏ¿¤Ç¤¤Þ¤¹¡£
¡¡ExecuteCommands ¥á¥½¥Ã¥É¤Ç¤Ï ICommnad ¤Î¥ê¥¹¥È¤Ç¤¢¤ë commands ¥ê¥¹¥È¤ò foreach ʸ¤òÍøÍѤ·¤Æ¥ë¡¼¥×½èÍý¤·¡¢
¥ê¥¹¥ÈÆâ¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë ICommnad ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¥¯¥é¥¹¤Î³Æ Execute ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Þ¤¹¡£
Execute ¥á¥½¥Ã¥É¤Ï MoveCommand ¥¯¥é¥¹¤È JumpCommnad ¥¯¥é¥¹¤Ç¤Ï¥á¥½¥Ã¥ÉÆâ¤Î½èÍý¤¬°Û¤Ê¤ë¤¿¤á¡¢Æ±¤¸¥á¥½¥Ã¥É¤ò¼Â¹Ô¤·¤Æ¤¤¤Þ¤¹¤¬¡¢½èÍý¤Î¿¶¤ëÉñ¤¤¤¬ÊѤï¤ê¤Þ¤¹¡£
¡¡Ì¿Îá¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¡ÖCommandManager¡×¥¯¥é¥¹¤Ë¡ÖICommand¡×¤ò¼ÂÁõ¤·¤¿¡ÖMoveCommand¡×¤ä¡ÖJumpCommand¡×¤Ê¤É¤òÄɲ䷤ƹԤ¤¤Þ¤¹¡£
¤½¤ì¤é¤òÄɲä·¤¿¤¢¤È¤Ë¡¢¼ÂºÝ¤Ë½èÍý¤ò¹Ô¤¦ Execute ¥á¥½¥Ã¥É¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï¡ÖExecuteCommands¡×¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£
¡¡¡ÖCommandManager¡×¥¯¥é¥¹¤«¤é¡ÖMoveCommand¡×¤òÌ¿Îá¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Î¥µ¥ó¥×¥ë¤Ï°Ê²¼¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£
¡¡¤³¤Î¥µ¥ó¥×¥ë¤Ç¤Ï¡¢¡ÖStart¡×¥á¥½¥Ã¥ÉÆâ¤Ç¤Ï¡ÖCommandManager¡×¤Ë¡ÖMoveCommand¡×¤òÄɲ䷤Ƥ¤¤Þ¤¹¡£
¤½¤Î¸å¡¢¡ÖUpdate¡×¥á¥½¥Ã¥ÉÆâ¤Ç¥¹¥Ú¡¼¥¹¥¡¼¤¬²¡¤µ¤ì¤¿»þ¤Ë¡ÖCommandManager¡×¤Î¡ÖExecuteCommands¡×¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¡ÖMoveCommand¡×¤ò¼Â¹Ô¤·¤Æ¤¤¤Þ¤¹¡£
¡¡VContainer ¤òÍøÍѤ¹¤ë¤³¤È¤Ç¡ÖCommandManager¡×¥¯¥é¥¹¤òDI¡ÊDependency Injection¡Ë¥³¥ó¥Æ¥Ê¤È¤·¤Æ³èÍѤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
°Ê²¼¤Ï¡¢¡ÖCommandManager¡×¥¯¥é¥¹¤ò¡ÖVContainer¡×¤òÍøÍѤ·¤Æ³èÍѤ¹¤ëÎã¤Ç¤¹¡£
¡¡Àè¤Û¤ÉºîÀ®¤·¤¿ CommnadManager ¤È¤Ï°Û¤Ê¤ê¡¢ICommnadManager ¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤ÆÌ¿Îá´ÉÍýÍѤΥ¯¥é¥¹¤òºîÀ®¤·¤Þ¤¹¡£
¡¡¡ÖCommandManager¡×¥¯¥é¥¹¤Ï¡ÖICommandManager¡×¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¡¢¡ÖInject¡×°À¤òÉÕ¤±¤Æ¤¤¤Þ¤¹¡£
¤³¤ì¤Ë¤è¤ê¡¢¡ÖVContainer¡×¤Ë¡ÖCommandManager¡×¥¯¥é¥¹¤¬¡ÖICommandManager¡×¤È¤·¤ÆÅÐÏ¿¤µ¤ì¤Þ¤¹¡£
¡¡MoveCommnad ¥¯¥é¥¹¤Ê¤É¤ò¤½¤Î¤Þ¤ÞÍøÍѤ·¡¢Æ±¤¸½èÍý¤òºîÀ®¤·¤Þ¤¹¡£
¡¡¡ÖExample¡×¥¯¥é¥¹¤Ï¡ÖICommandManager¡×¤ò¥¤¥ó¥¸¥§¥¯¥È¤¹¤ë¤¿¤á¤Ë¡ÖInject¡×°À¤òÉÕ¤±¤Æ¤¤¤Þ¤¹¡£
¡ÖStart¡×¥á¥½¥Ã¥ÉÆâ¤Ç¤Ï¡ÖInject¡×¥á¥½¥Ã¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤Ç¡ÖICommandManager¡×¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤¬À¸À®¤µ¤ì¤Þ¤¹¡£
¡¡DI ¥³¥ó¥Æ¥Ê¤Îµ¡Ç½¤òÍøÍѤ¹¤ë¤³¤È¤Ë¤è¤ê¡¢½èÍý¤ÎÃê¾ÝÅÙ¤ò¤µ¤é¤ËÁý¤·¡¢ÈÆÍÑÀ¤Î¤¢¤ë½èÍý¤Ëºî¤êÊѤ¨¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£
- ¥«¥Æ¥´¥ê¡§
- ¿Ê³Ø/¥¹¥¯¡¼¥ë
- ¥×¥í¥°¥é¥ß¥ó¥°
¥³¥á¥ó¥È¤ò¤«¤¯