[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: JAVA¥ª¥Ö¥¸¥§¥¯¥ÈÀß·×ÂèÆó¾Ï¤ÎḚ̂Æ



In article <199901250310.MAA17742@xxxxxxxxxx>
ENDO Yasuyuki wrote:
>¡Ö¥¤¥ó¥¿¡¼¥Õ¥§¡¼¥¹¤ò»È¤Ã¤¿À߷ספϤ½¤Î¤¢¤È¤Î¾Ï¤Ê¤Î¤Ç¡¢
>¤³¤³¤Ç¤Ï interface ¤Ï»È¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¤È¤¤¤¦Á°Äó¤ÏÃÖ¤¤¤È¤¤¤Æ...
¹â¶¶¤µ¤ó¤Î¥Õ¥©¥í¡¼¤âƱ¤¸¤¯¤Ç¤¹¤¬¡¢ÂèÆó¾Ï¤Ç¤Ïinterface¤ò»È¤ï¤º¤Ë̵Íý
ÌðÍýÀ߷פ·¤¿¤È¤¤¤¦°õ¾Ý¤Ï³Î¤«¤Ë¤¢¤ê¤Þ¤¹.

¤¿¤À¡¢°Ê¹ß¤òÆÉ¤ß¿Ê¤ó¤Ç¤â·ë¶ÉPassenger is Person¤Ë¤Ï¤Ê¤é¤Ê¤¤¤ó¤Ç¤¹¤è
¤Í.
»ä¤Ïinterface¤Ï¥¯¥é¥¹¤Ë±þÅú²ÄǽÀ­¤òÉղ乤ë¤â¤Î¤À¤È¹Í¤¨¤Æ¤¤¤ë¤ó¤Ç¡¢
¤»¤Ã¤«¤¯¤½¤¦¤¤¤¦µ¡¹½¤¬¤¢¤ë¤Î¤ËPassenger(¾èµÒ)¤¬Person(¿Í)¤È¤·¤Æ°·¤¨
¤Ê¤¤¤Î¤Ï°Û¾ï¤ËÉÔ¼«Á³¤Ë¸«¤¨¤Þ¤¹.
# ¤À¤Ã¤Æ¡¢¾èµÒ¥ª¥Ö¥¸¥§¥¯¥È¤«¤é¿Í¥ª¥Ö¥¸¥§¥¯¥È¤ò¼è¤ê½Ð¤·¤ÆÁàºî¤¹¤ë¤ó¤Ç
# ¤¹¤è.»È¤¦Â¦¤ÎΩ¾ì¤Ç¸«¤Æº®Íð¤ò¾·¤­¤½¤¦¤Ç¤¹.

°Ê²¼¤Î¼ÂÁõ¤Ç¤â¿Í¥ª¥Ö¥¸¥§¥¯¥È¤È¤½¤Î¿Í¤ÎÌò³ä¥ª¥Ö¥¸¥§¥¯¥È¤ÏÊ̤Υª¥Ö¥¸¥§
¥¯¥È¤Ç¤Ï¤¢¤ê¤Þ¤¹¤¬¡¢³°Éô¤«¤é¤Ï¤½¤ì¤ò°Õ¼±¤¹¤ëɬÍפϤ¢¤ê¤Þ¤»¤ó.
# Ìò³ä¤òưŪ¤ËÉÕ¤±Âؤ¨¤ëɬÍפ¬Ìµ¤¤¤Ê¤éñ½ã¤Ëimplements¤·¤¿¥¯¥é¥¹¤òºî
# ¤ë¤À¤±¤Ç¡¢ÀÅŪ¤Ë¡ÖÌò³ä¤òÉղáפǤ­¤Þ¤¹¤¬.

>>// Ìò³ä¤ÎÄêµÁÉôʬ
>>interface Person { //(ά) }
>>interface PersonRole extends Person { //(ά) }
# ¤³¤Î̿̾¤ÏËܤ˹ç¤ï¤»¤¿¤À¤±¤ÇÌò³ä¤òüŪ¤Ëɽ¤»¤Æ¤¤¤Þ¤»¤ó.
>>interface Agent extends PersonRole { //(ά) }
>>interface Passenger extends PersonRole { //(ά) }
>>interface AgentPassenger extends Agent, Passenger {}
>
>¤Ê¤«¤Ê¤«¤¤¤¤´¶¤¸¤Ç¤¹¤Í¡£
¤È¤ê¤¢¤¨¤ºinterface¤À¤±·è¤á¤Æ¤ß¤Þ¤·¤¿.¤È¤Ë¤«¤¯»È¤¦Â¦¤Ïinterface¤ò¸«
¤ÆAgent/Passenger¤ÏPerson¤Ç¤¢¤ë¤³¤È¤¬²ò¤«¤ê¤Þ¤¹.°Ê²¼¤Î¥¯¥é¥¹¤Ï´ðËÜŪ
¤Ë¤³¤Îinterface¤òÊݾڤǤ­¤ë¤è¤¦¤ËËä¤á¤Æ¤¤¤Ã¤¿¤Ë²á¤®¤Þ¤»¤ó.
(ưŪ¤ËÊѤ¨¤é¤ì¤ë¤È¤¤¤¦¤³¤È¤Ï°Õ¼±¤·¤Æ¤¤¤Þ¤¹)

# ¤À¤«¤é¥Ñ¥¿¡¼¥ó¤Ç¤Ï¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¤¤Þ¤·¤¿¤¬...

>>abstract class PersonDecorator implements PersonRole { //(ά) }
>>class ConcretePerson implements Person { //(ά) }
>>class ConcretePersonRole extends ConcretePerson implements PersonRole { //(ά) 
>}
¢¬¤³¤¤¤Ä¤ÏConcretePerson¤ò¼õ¤±¤È¤ë¥³¥ó¥¹¥È¥é¥¯¥¿¤ò¤¿Êý¤¬Îɤ¤¤Ç¤¹¤Í.
# ¥³¥Ô¡¼²Äǽ¤Ê°À­¤ò¥³¥Ô¡¼¤¹¤ë¤â¤Î.¤³¤ì¤Ë¤è¤Ã¤ÆConcretePerson¤«¤é¤Î
# ÊÑ·Á¤ò²Äǽ¤Ë¤¹¤ë.
>>class ConcreteAgent extends PersonDecorator implements Agent { //(ά) }
>>class ConcretePassenger extends PersonDecorator implements Passenger { //(ά) }
>>class ConcreteAgentPassenger extends ConcreteAgent {//(ά) }
>
>¤³¤Î¤Ø¤ó¤¬¶ñÂÎŪ¤Ë¤É¤¦Æ°¤¯¤Î¤«¡¢¤É¤¦»È¤¦¤Î¤«¤¬¤Þ¤À»ä¤Ë¤Ï¸«¤¨¤Æ¤¤¤Þ¤»¤ó¡£
>À¸À®¤Ë´Ø¤¹¤ë¥Ñ¥¿¡¼¥ó¤Ê¤Î¤Ç¤·¤ç¤¦¤«...
ʬÎह¤ë¤Ê¤é¡Ö¿¶¤ëÉñ¤¤¤Ë´Ø¤¹¤ë¡Á¡×¤È¤¤¤Ã¤¿´¶¤¸¤Ç¤¹.

»È¤¦¤È¤­¤ÏConcretePerson¥ª¥Ö¥¸¥§¥¯¥È¤ÏñÂΤǻȤ¨¤Þ¤¹¤¬¡¢¤½¤ì¤ËÌò³ä¤ò
Éղ乤ë¾ì¹ç¤Ë¤Þ¤ºConcretePersonRole¥ª¥Ö¥¸¥§¥¯¥È¤ËÊÑ·Á¤·¤Æ(°¿¤¤¤ÏºÇ
½é¤«¤éConcretePersonRole¥ª¥Ö¥¸¥§¥¯¥È¤òÀ¸À®)¡¢¤½¤ì¤é¤ò²¼¤Î£³¤Ä¤Î¥¯¥é
¥¹¤Î²¿¤ì¤«¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ËÅϤ»¤ÐưŪ¤ËÌò³ä¤ÎÉղ䬽ÐÍè¤Þ¤¹.
# Ìò³ä¤Î¼è¤ê³°¤·¤â²Äǽ¤Ç¤¹¤¬¤½¤Î¥á¥½¥Ã¥É¤Îµ­½Ò¤Ï¾Êά¤·¤Æ¤¤¤Þ¤¹.

°Ê²¼¤Ï¤¢¤ó¤Þ¤ê¹Í¤¨¤Æ¤¤¤Ê¤¤¤Þ¤Þ½ñ¤¤¤Æ¤¤¤Þ¤¹.

ÂçÂÎDecorator¥Ñ¥¿¡¼¥ó¤ÈƱ¤¸ÌäÂ꤬¤¢¤ë¤Î¤«¤Ê¤È»×¤¤¤Þ¤¹.
# Ʊ¤¸¿¶¤ëÉñ¤¤¤òÆó½Å¤ËÉÕ¤±Â­¤µ¤ì¤¿¤È¤­¤Ë¤É¤¦¿¶¤ëÉñ¤¦¤«¤È¤«.
¤½¤·¤Æ½ÐÍè¤Æ¤«¤é»×¤¦¤Ë¡¢¤³¤Îµ¡¹½¼«ÂΤÏinterface¤ò»È¤ï¤Ê¤¯¤Æ¤â²Äǽ¤¸
¤ã̵¤¤¤Ç¤·¤ç¤¦¤«?
interface»È¤ï¤Ê¤¤ÈǤ˽ñ¤­´¹¤¨¤é¤ì¤ì¤Ð¡¢ÂèÆó¾Ï¤ËºÜ¤Ã¤±¤Æ¤âÎɤ¤¤³¤È¤Ë
¤Ê¤ê¤Þ¤¹¤Í(¾Ð).

³¤­¤Ï¤Þ¤¿»þ´Ö¤¬¤¢¤ê¤Þ¤·¤¿¤é....
# ÆÉ½ñ²ñÉÔ»²²Ã¤ÎÊý¤ª¤è¤Ó¡¢Ëܤò»ý¤Ã¤Æ¤¤¤Ê¤¤Êý¤Ø.¤À¤é¤À¤é¤È¤¹¤ß¤Þ¤»¤ó.

=====================================
Shin¡÷¥¤¥Ç¥¢
=====================================