| ªí±¤W¬Ý¨Ó¡A¤¶±¦³ÂI¹³¬O§¹¥þ¨S¦³¥ô¦ó¤èªk³Q¹ê§@ªº©â¶HÃþ§O¡A¦ý¹ê»Ú¤W¨âªÌ¦b»y¸q»PÀ³¥Î¤W¬O¦³®t§Oªº¡C¡uÄ~©Ó¬Y©â¶HÃþ§OªºÃþ§O¥²©w¬O¸ÓÃþ§Oªº¤@Ó¤lÃþ¡v¡A¥Ñ©ó¦PÄݤ@ÓÃþ«¬¡A¥un¤÷Ãþ§O¤¤¤]¦³©w¸q¦P¦W¤èªk¡A±z´N¥i¥H³z¹L¤÷Ãþ§O«¬ºA¨Ó¾Þ§@¤lÃþ¹ê¨Ò¤¤³Q«·s©w¸qªº¤èªk¡A¤]´N¬O³z¹L¤÷Ãþ§O«¬ºA¶i¦æ¦h«¬¾Þ§@¡A¦ý¡u¹ê§@¬Y¤¶±ªºÃþ§O¨Ã¤£³QÂkÄÝ©óþ¤@Ãþ¡v¡A¤@Óª«¥ó¤W¥i¥H¹ê§@¦hÓ¤¶±¡C ¦Ò¼{±z¦³¤@Ó¤èªkdoRequest()¡A±z¨Æ¥ý¨ÃµLªkª¾¹D¤°»ò«¬ºAªºª«¥ó·|³Q¶Ç¶i¨Ó¡A©ÎªÌ¬O³oÓ¤èªk¥i¥H±µ¨ü¥ô¦óÃþ«¬ªºª«¥ó¡A±z·Qn¾Þ§@ª«¥ó¤Wªº¬YÓ¯S ©w¤èªk¡A¨Ò¦pdoSomething()¤èªk¡A°ÝÃD¬O¶Ç¶i¨Óªºª«¥ó¬O¥ô·Nªº¡A°£«D±z©w¸q¤@Ó©â¶HÃþ§O¨Ã«Å§idoSomething()©â¶H¤èªk¡AµM«áÅý©Ò ¦³ªºÃþ§O³£Ä~©Ó³oÓ©â¶HÃþ§O¡A§_«hªº¸Ü±zªºdoRequest()¤èªk¦ü¥GµLªk¹ê§@¥X¨Ó¡A¹ê»Ú¤W³o»ò§@¤]¨S¦³»ùÈ¡C ¤¶±ªº¥Øªº¦b©w¸q¤@²Õ¥i¾Þ§@ªº¤èªk¡A¹ê§@¬Y¤¶±ªºÃþ§O¥²¶·¹ê§@¸Ó¤¶±©Ò©w¸qªº©Ò¦³¤èªk¡A¥unª«¥ó¦³¹ê§@¬YÓ¤¶±¡A´N¥i¥H³z¹L¸Ó¤¶±¨Ó¾Þ§@ª«¥ó¤W¹ïÀ³ªº¤èªk¡AµL½×¸Óª«¥ó¹ê»Ú¤WÄÝ©óþ¤@ÓÃþ§O¡A¹³¤W¤@¬q©Òz¤Îªº°ÝÃD¡A´Nn¾an¤¶±¨Ó¸Ñ¨M¡C ¤¶±ªº«Å§i¬O¨Ï¥Î"interface"ÃöÁä¦r¡A«Å§i¤è¦¡¦p¤U¡G interface ¤¶±¦WºÙ {
¶Ç¦^«¬ºA ¤èªk(°Ñ¼Æ¦C); ¶Ç¦^«¬ºA ¤èªk(°Ñ¼Æ¦C); // .... } ¤@ ӫŧi¤¶±ªº¨Ò¤l¦p¤U¡G
public interface IRequest {
¤¶±ªº¤èªkÅv¹w³]³£¬O"public"¡A©Ò¥H§Y¨Ï¤èªk«Å§i®É¤£«ü©wpublic¤´¬O¹w³]¬°public¡A¨Ò¦p¤U¨Ò»P¤W¨Ò¬O¬Û¦Pªº¡G
public interface IRequest {
¤¶±¹w³]³£¬Oabstract¡A¦³µL¥[abstract³£¤@¼Ë¡A¥H¤Uªº«Å§i§@¥Î¤]¬O¬Û¦P¡G
public abstract interface IRequest {
·í©w¸qÃþ§O®É¡A¥i¥H¨Ï¥Î"implements"ÃöÁä¦r¨Ó¤@¨Ö«ü©wn¹ê§@þÓ¤¶±¡A¤¶±¤¤©Ò¦³©w¸qªº¤èªk³£n¹ê§@¡A¨Ò¦p¡G
public class HelloRequest implements IRequest {
public class WelcomeRequest implements IRequest {
¥Ñ©ó¤¶±¤¤ªº¤èªk¹w³]³£¬Opublic¡A©Ò¥H¹ê§@¤¶±ªºÃþ§O¤¤¡A¤èªk¥²¶·«Å§i¬°public¡A§_«hµLªk³q¹L½sĶ¡C ¨Ó¼g¤@Ó´ú¸Õµ{¦¡¡G
public class Test {
¦b³oÓµ{¦¡¤¤¡A§Y¨ÏdoRequest()¨Ã¤£ª¾¹D¶Ç¤Jªºª«¥ó¬Oþ¤@ºØÃþ§Oªº¹ê¨Ò¡A¦ý¥¦¥unª¾¹D³oÓª«¥óªº¾Þ§@¤¶±´N¥i¥H¥¿½Tªº°õ¦æ½Ð¨D¡A³o¬O¤¶±¹ê§@ªº¤@Ó¹ê»ÚÀ³¥Î¡A¤]¬O«Ü±`¨£¨ìªº¤@ºØÀ³¥Î¡C ¦bC++¤¤¥i¥H¨Ï¥Î¦h«Ä~©Ó¡A¦ý¦bJava¤¤¥u¯à³æ¤@Ä~©Ó¡A¤]´N¬O¤@¦¸¥u¯àÂX¥R¤@ÓÃþ§O¡AJava¨Ï¥Îinterface¨Ó¹F¨ì¬Y¨Ç¦h«Ä~©Óªº¥Øªº¡A±z¥i ¥H¤@¦¸¹ê§@¦hÓ¤¶±¡A´N¹³¬O¦P®ÉÄ~©Ó¦hÓ©â¶HÃþ§O¡]¹ê»Ú¤W³o¬OC++¤¤¦h«Ä~©Óªº¤@Ó¹ê»Ú¹B¥Î¤è¦¡¡^¡A¹ê§@¦hÓ¤¶±ªº¤è¦¡¦p¤U¡G public class Ãþ§O¦WºÙ implements ¤¶±1, ¤¶±2, ¤¶±3 {
// ¤¶±¹ê§@ } ·í±z¹ê§@¦hÓ¤¶±®É¡A°O±o±z¥²¶·¹ê§@¨C¤@Ó¤¶±¤¤©Ò©w¸qªº¤èªk¡A¥Ñ©ó±z¹ê§@¤F¦hÓ¤¶±¡A©Ò¥Hn¾Þ§@ª«¥ó®É¡A¥²n®É±z¥²¶·§@¡u¤¶±Âà´«¡v¡A¦p¦¹µ{¦¡¤~¯àª¾¹D¦p¦ó¥¿½Tªº¾Þ§@ª«¥ó¡A¨Ò¦p°²³]someObject¹ê§@¤FISomeInterface1»PISomeInterface2¨âÓ¤¶±¡A«h§ÚÌ¥i¥H¦p¤U¹ïª«¥ó¶i¦æ¤¶±Âà´«»P¾Þ§@¡G ISomeInterface1 obj1 = (ISomeInterface1) someObject;
obj1.doSomeMethodOfISomeInterface1(); ISomeInterface2 obj2 = (ISomeInterface2) someObject; obj2.doSomeMethodOfISomeInterface2(); ·í ©â¶HÃþ§O ¤¤ªº©Ò¦³¤èªk³£¬O©â¶H¤èªk®É¡A¥¦ªº§@¥Î´N»P¤¶±¦³¨ÇÃþ¦ü¡]¹³¦bC++¤¤¡A¨Ã¨S¦³°Ï¤À©â¶HÃþ§O»P¤¶±¡^¡A¦ý°O±o¦bJava¤¤¥u¤¹³\³æ¤@Ä~©Ó¡A©Ò¥H±z¤£¯à¦P®É Ä~©Ó¦hÓ©â¶H¤èªk¡C ¨Æ¹ê¤W¦bJavaùØ¡A©â¶HÃþ§O¤¤¨Ã¤£·|¥þ¬O©â¶H¤èªk¡A³o»ò¨Ï¥Î¨Ã¤£¾A·í¡A¦bJava¤¤°Ï¤À©â¶HÃþ§O»P¤¶±¡A¨ä¦b»y¸q¤W¬O¦³©Ò¤£¦Pªº¡A¨Ò¦p©â¶HÃþ§O¤¤¤¹³\±z ¥ý¹ê§@¬Y¨Ç¤èªk¡A¦Ó«O¯d¤@¨Ç©â¶H¤èªk¤£¹ê§@¡A¨äÀ³¥Î³õ¦X¤§¤@¬O¹³ Template Method ¼Ò¦¡ ¤¤¤¶²Ðªº¤¶±©w¸q¤¤ªº¤èªk«h¬O§¹¥þ¤£¹ê§@¡A¥¦¥u©w¸q¤èªk¦WºÙ¡A¤¶±±`¥Î©ó³W½d²Î¤@ªº¾Þ§@¤¶±¡A¨äÀ³¥Î³õ¦X¤§¤@¬O¹³ Command ¼Ò¦¡ ¤¶±¤]¥i¥H¶i¦æÄ~©Óªº°Ê§@¡A¦P¼Ë¤]¬O¨Ï¥Î"extends"ÃöÁä¦r¡A¨Ò¦p¡G ¤¤¤¶²Ðªº¡A¤¶±©w¸q¤@²Õ¨ó©w¡A©Ò¦³¹ê§@¥¦ªºÃþ§O³£¥²¶·¿í¦uªº¨ó©w¡A¤¶±¥i¥H«OÃÒ¹ê§@¥¦ªºÃþ§O¤@©w·|¹ê§@©Ò©w¸qªº¤èªk¡C public interface ¦WºÙ extends ¤¶±1, ¤¶±2 {
// ... } ¤£¦P©óÃþ§Oªº¬O¡A¤¶±¥i¥H¦P®ÉÄ~©Ó¦hÓ¤¶±¡A³o¤]¥i¥H¹F¨ìÃþ¦üC++¤¤¦h«Ä~©Óªº¥\¯à¡A¦Ó¹ê§@¤l¤¶±ªºÃþ§O¥²¶·±N©Ò¦³¦b¤÷¤¶±©M¤l¤¶±¤¤©Ò©w¸qªº¤èªk¹ê°µ¥X¨Ó¡C
|