ÔÚ¿·¢k8¹ú¼ÊÒ»Ñùƽ³£ÉúÑÄÖУ¬Ã÷È·×ñÊØ¹æÔò¡¢Öƶ©¹æ³ÌÊǺÜÊÇÆÕ±éµÄÕ÷Ï󣬺ñȽ»Í¨Ñ¶ºÅµÆ¡¢¹«Ë¾Öƶȡ¢Ñ§Ð£¹æÕ¡£ÕâÐ©ÖÆ¶È×Ô¼º¾ÍÏñÊÇ¡°½Ó¿Ú¡±£¬ËüÃǽç˵Á˹æÔòºÍ²Ù×÷·½·¨£¬Èòî±ð¸öÌåÔÚÅäºÏµÄ¹æÔòÏÂÐ×÷ÎÞ°¡£ÓÉ´ËÀà±È£¬ÔÚÈí¼þ¿ª·¢ÖУ¬½Ó¿Ú£¨Interface£©Ò²ÊÎÑÝ×ÅÀàËÆµÄ½ÇÉ«£¬ËüÊÇʵÏÖÃæÏò¹¤¾ß±à³ÌµÄ»ù´¡Ö®Ò»£¬Îª³ÌÐòµÄÀ©Õ¹ÐÔ¡¢Î¬»¤ÐÔÌṩ¼«´óµÄ×ÊÖú¡£
ʲôÊǽӿڣ¿¼òÆÓÀ´Ëµ£¬½Ó¿Ú¾ÍÊÇÒ»ÖÖ½ç˵¹æ·¶µÄ×óȯ£¬Ëü»®¶¨ÁËij¸öÀà±ØÐèʵÏÖµÄÒªÁì¡¢ÊôÐÔ¡¢ÊÂÎñµÈÐÐΪ£¬µ«²»Éæ¼°ÏêϸµÄʵÏÖϸ½Ú¡£»»¾ä»°Ëµ£¬½Ó¿ÚÏñÊÇÒ»¸öÀ¶Í¼£¬Ã»ÓÐÏêϸµÄ¹¦Ð§ÊµÏÖ£¬È´»®¶¨ÁËij¸öÀàÓ¦¸ÃÌṩµÄÐÐΪ½Ó¿Ú¡£ÕâÑù£¬ÎÞÂÛÕâ¸öÀàµÄÏêϸʵÏÖÔõÑù£¬Ö»Òª×ñÕÕ½Ó¿Ú½ç˵£¬¾ÍÄܰü¹ÜËü¾ßÓÐÒ»¶¨µÄ¹¦Ð§£¬Öª×ãÔ¤ÆÚµÄŲÓÃÐèÇó¡£
ÒÔ½»Í¨Ñ¶ºÅµÆÎªÀý£¬½»Í¨µÆµÄ½Ó¿Ú¿ÉÄܰüÀ¨Èý¸ö״̬£ººìµÆ¡¢Â̵ơ¢»ÆµÆ¡£Èκν»Í¨µÆµÄʵÏÖ£¬¶¼±ØÐè×ñÕÕÕâ¸ö¡°½Ó¿Ú¡±£¬¼´¶¼ÄÜÏÔʾÕâÈýÖÖ״̬£¬²¢Æ¾Ö¤°²ÅžÙÐйâµÄת±ä¡£Õâ¸ö¡°½Ó¿Ú¡±½ç˵Á˽»Í¨µÆÓ¦µ±ÌṩµÄ±ê×¼ÐÐΪ£¬Ê¹µÃ²î±ðµØÇø¡¢²î±ðÀàÐ͵Ľ»Í¨µÆ¶¼¿ÉÒÔÇкÏͳһµÄ¹æÔò£¬Àû±ã½»Ö¯¼æÈݺÍά»¤¡£
ÔÚC#ÖУ¬½ç˵½Ó¿ÚºÜÊǼòÆÓ£¬Ê¹ÓÃÒªº¦×Öinterface¡£ºÃ±È£¬ÎÒÃÇ¿ÉÒÔ½ç˵һ¸ö¡°¶¯ÎµÄ½Ó¿Ú£¬°üÀ¨¡°½Ð¡±Ðж¯ºÍ¡°Òƶ¯¡±Ðж¯£º
publicinterfaceIAnimal{voidMakeSound();//½ÐvoidMove();//ÒÆ¶¯}
ÈκÎʵÏÖÁËIAnimal½Ó¿ÚµÄÀ࣬±ØÐèÌṩMakeSound()ºÍMove()ÕâÁ½¸öÒªÁ죺
publicclassDog:IAnimal{publicvoidMakeSound(){Console.WriteLine("ÍôÍô");}publicvoidMove(){Console.WriteLine("¹·ÔÚÅÜ");}}publicclassBird:IAnimal{publicvoidMakeSound(){Console.WriteLine("ß´ß´ÔûÔû");}publicvoidMove(){Console.WriteLine("ÄñÔÚ·É");}}
ͨ¹ýÕâÖÖ·½·¨£¬½Ó¿ÚÈòî±ðÀàÐ͵Ť¾ß¾ßÓÐÒ»ÖµÄÐÐΪ±ê×¼£¬¿Í»§¶Ë´úÂë¿ÉÒÔͳһŲÓýӿÚÖеÄÒªÁ죬¶ø²»±ØÌåÌùÏêϸʵÏÖϸ½Ú¡£
ΪʲôÎÒÃÇҪʹÓýӿÚÄØ£¿Ö÷ÒªÓÐÒÔϼ¸¸öÀíÓÉ£º
½âñîºÏ£º¿Í»§¶ËÖ»ÒÀÀµÓÚÁýͳµÄ½Ó¿Ú£¬¶ø²»ÊÇÏêϸʵÏÖÀà¡£ÕâÒâζ×ÅÄã¿ÉÒÔÔÚ²»Ó°Ïì¿Í»§¶ËµÄÇéÐÎÏ£¬Ìæ»»»òÐÂÔöʵÏÖÀà¡£¶à̬ÐÔ£ºÍ¨¹ý½Ó¿Ú£¬¿ÉÒÔʵÏÖ¶à̬£¬Ê¹µÃ²î±ð¹¤¾ß¿ÉÒÔÒÔͳһµÄ·½·¨¾ÙÐвÙ×÷£¬Ìá¸ß´úÂëµÄÎÞаÐÔºÍÀ©Õ¹ÐÔ¡£¹æ·¶Ô¼Êø£º½Ó¿Ú½ç˵ÁËÀà±ØÐèʵÏֵijÉÔ±£¬È·±£²î±ðÀà×ñÕÕÏàͬµÄÐÐΪ±ê×¼£¬±ãÓÚÍŶÓÐ×÷¡£
Ö§³ÖÒÀÀµµ¹×ªÔÔò£º½Ó¿ÚÔÊÐí¸ß²ãÄ£¿éÒÀÀµÁýͳ£¬¶ø²»ÊÇÒÀÀµÏêϸʵÏÖ£¬´Ó¶øÌáÉýϵͳµÄ¼Ü¹¹Æ·ÖÊ¡£
˼Á¿Ò»¸öÏÖʵӦÓó¡¾°£º¼ÙÉèÎÒÃÇÔÚ¿ª·¢Ò»¿î³èÎïÄ£ÄâÓÎÏ·£¬ÓÎÏ·ÖпÉÒÔʵÏÖ¶àÖÖ³èÎï£¬Íæ¼Ò¿ÉÒÔÑ¡Ôñ²î±ðµÄ³èÎï¾ÙÐл¥¶¯¡£´Ëʱ£¬ÈôÊÇÿ¸ö³èÎïµÄÐÐΪ¶¼¸÷×ÔʵÏÖ£¬¿ÉÄܻᵼÖ´úÂëÒÀÀµÔÓÂÒ¡¢Î¥·´OOPµÄ·â×°ÔÔò¡£½ÓÄɽӿڣ¬ÎÒÃÇ¿ÉÒÔ½ç˵³èÎïµÄÐÐΪ¹æÔò£¬È»ºóÿÖÖ³èÎïʵÏÖÕâ¸ö½Ó¿Ú£¬Í³Ò»Å²ÓýӿÚÖеÄÒªÁì¡£
×ܽáµÚÒ»²¿·Ö£¬½Ó¿ÚÔÚC#µÄÓ¦Óü«ÎªÆÕ±é£¬ËüÏñÊÇÈí¼þ½á¹¹Öеġ°ÌõÔ¼¡±£¬°ü¹ÜÁ˲î±ðÀà¿ÉÒÔÒÔÒ»Öµķ½·¨½»»¥£¬Ìá¸ß´úÂëµÄÖØÓÃÐԺͿÉά»¤ÐÔ¡£ÎÞÂÛÊÇÉè¼ÆÖØ´óµÄϵͳ£¬ÕÕ¾ÉʵÏÖÎÞаµÄ²å¼þ»úÖÆ£¬½Ó¿Ú¶¼ÊÎÑÝ×Ų»¿É»òȱµÄ½ÇÉ«¡£Ã÷È·½Ó¿ÚµÄʵÖÊ£¬²Å»ª¸üºÃµØÊ¹ÓÃËü¾ÙÐиßЧµÄÃæÏò¹¤¾ß±à³Ì¡£
ÔÚµÚÒ»²¿·ÖÖУ¬ÎÒÃǶÔC#ÖеĽӿڿ´·¨¡¢½ç˵·½·¨ÒÔ¼°Ó¦Óó¡¾°×÷ÁË»ù±¾ÏÈÈÝ¡£ÏÖÔÚ£¬ÈÃÎÒÃǽøÈë¸üÉîÈëµÄʵ¼ù»·½Ú£¬Ì½Ìֽӿڵĸ߼¶Ó÷¨¡¢Á¬ÏµÏÖʵ°¸Àý£¬ÒÔ¼°ÔÚÉè¼ÆÖеÄ×î¼Ñʵ¼ù¡£
½Ó¿ÚµÄ¼ÌÐøºÍ¶àÖØÊµÏÖ¡£C#ÖеĽӿڿÉÒÔ¼ÌÐøÁíÒ»¸ö½Ó¿Ú£¬Ò»¸öÀà¿ÉÒÔʵÏÖ¶à¸ö½Ó¿Ú£¬ÕâΪÎÒÃÇÌṩÁ˼«´óµÄÎÞаÐÔ¡£ÀýÈ磬һ¸ö¡°¾ßÓпɺ½ÐÐÄÜÁ¦µÄ¶¯Î½Ó¿Ú¿ÉÒÔ¼ÌÐø¡°¶¯Î½Ó¿Ú£¬Í¬Ê±Ìí¼ÓרÊôµÄº½ÐÐÏà¹ØÒªÁì¡£
publicinterfaceIFlyable{voidFly();}publicinterfaceIAnimal{voidMakeSound();voidMove();}publicclassDuck:IAnimal,IFlyable{publicvoidMakeSound(){Console.WriteLine("¸Â¸Â");}publicvoidMove(){Console.WriteLine("Ѽ×ÓÔÚ×ß");}publicvoidFly(){Console.WriteLine("Ѽ×ÓÔÚ·É");}}
ÕâÑù£¬DuckÀà¼ÈÄÜÖª×ã»ù±¾µÄ¡°¶¯ÎÐÐΪ£¬Ò²¾ßÓС°º½ÐС±µÄÄÜÁ¦¡£½Ó¿Ú¼ÌÐøºÍ¶àÖØÊµÏÖʹµÃÖØ´óÐÐΪµÄ×éºÏ±äµÃ¸üΪÎÞа£¬Ò²ÇкÏÏÖʵÖжàÃæÐÔʵÌåµÄ¶à½ÇÉ«ÌØÕ÷¡£
ÏÂÒ»µãÊǽӿڵÄÏÔʽʵÏÖ¡£ÕâÊÇÔÚÒ»¸öÀàÖÐʵÏÖ¶à¸ö½Ó¿Úʱ£¬×èÖ¹³ÉÔ±ÃüÃû³åÍ»µÄÒ»ÖÖÊֶΡ£ÀýÈ磬ÈôÊÇÁ½¸ö½Ó¿Ú¶¼½ç˵ÁËÃû×ÖÏàͬµÄÒªÁ죬ÔÚʵÏÖʱ¿ÉÒÔͨ¹ýÏÔʽ½Ó¿ÚʵÏÖ£¬¼á³Ö½Ó¿ÚÖ®¼äµÄ×ÔÁ¦ÐÔ¡£
publicinterfaceIFirst{voidExecute();}publicinterfaceISecond{voidExecute();}publicclassDualAction:IFirst,ISecond{voidIFirst.Execute(){Console.WriteLine("Ö´ÐÐIFirstµÄÒªÁì");}voidISecond.Execute(){Console.WriteLine("Ö´ÐÐISecondµÄÒªÁì");}}
DualActionaction=newDualAction();((IFirst)action).Execute();//Ö´ÐÐIFirstµÄÒªÁì((ISecond)action).Execute();//Ö´ÐÐISecondµÄÒªÁì
ÌÖÂÛ½Ó¿ÚµÄÉè¼ÆÔÔò¡£ÓÅÒìµÄ½Ó¿ÚÉè¼ÆÓ¦×ñÕÕ¡°½Ó¿Ú¸ôÀëÔÔò¡±£¬¼´Ã¿¸ö½Ó¿ÚÖ»½ç˵һ×éÏà¹ØµÄÐÐΪ£¬×èÖ¹½«¶àÖÖÖ°ÔðÈû½ø¼òµ¥½Ó¿Ú¡£ÀýÈ磬ÓëÆä½¨ÉèÒ»¸öÖØ´óµÄIWorker½Ó¿Ú£¬¼¯³É¡°ÊÂÇ顱¡¢¡°ÐÝÏ¢¡±¡¢¡°Ñ§Ï°¡±µÈ¶à¸öÖ°Ô𣬸üÓÅÑŵÄ×ö·¨ÊDzð·Ö¶à¸öרһÔðÈεĽӿڡ£
½Ó¿Ú¿ÉÒÔ×÷ΪÒÀÀµ×¢ÈëµÄÒªº¦ÔªËØ¡£ÔÚÏÖʵ¿ª·¢ÖУ¬Ðí¶à³¡¾°¶¼ÐèÒªÓõ½ÒÀÀµ×¢È루DI£©£¬ÒÔÔöÇ¿²âÊÔÄÜÁ¦ºÍÄ£¿é½âñî¡£ÒÀÀµÓÚ½Ó¿ÚµÄÉè¼Æ£¬ÈÃÎÒÃÇ¿ÉÒÔÓòî±ðµÄʵÏÖÀ´Ìæ»»£¬¼«´óÌá¸ßÁËϵͳµÄ¿ÉÀ©Õ¹ÐÔ¡£
publicinterfaceIPaymentProcessor{voidProcessPayment(decimalamount);}
publicclassPayPalProcessor:IPaymentProcessor{publicvoidProcessPayment(decimalamount){//PayPalÖ§¸¶ÊµÏÖ}}publicclassStripeProcessor:IPaymentProcessor{publicvoidProcessPayment(decimalamount){//StripeÖ§¸¶ÊµÏÖ}}//ÔÚÓªÒµ²ãpublicclassOrderService{privatereadonlyIPaymentProcessor_paymentProcessor;publicOrderService(IPaymentProcessorpaymentProcessor){_paymentProcessor=paymentProcessor;}publicvoidCheckout(decimalamount){_paymentProcessor.ProcessPayment(amount);}}
×ܽáµÚ¶þ²¿·Ö£¬½Ó¿Ú²»µ«ÔÚ»ù´¡½ç˵ÉÏÌṩÁ˹淶£¬¸üÔÚÖØ´óϵͳÉè¼Æ¡¢Ö°Ôð²ð·Ö¡¢¶à½ÇÉ«¶àÐÐΪ×éºÏÖÐʩչҪº¦×÷Ó᣽èÖú½Ó¿ÚµÄ¼ÌÐø¡¢¶àÖØÊµÏÖ¡¢ÏÔʽʵÏÖºÍÒÀÀµ×¢È룬ÎÒÃÇ¿ÉÒÔ¹¹½¨³ö¼«¾ßµ¯ÐÔÓëÎÞаÐԵļܹ¹¡£×ñÕÕÓÅÒìµÄ½Ó¿ÚÉè¼ÆÔÔò£¬ÊÇ´òÔìά»¤ÐԸߡ¢À©Õ¹ÐÔÇ¿Èí¼þµÄ»ù´¡¡£
ÕâÁ½²¿·ÖÄÚÈÝÏ£ÍûÄÜΪÄã·¿ªÃ÷È·C#½Ó¿ÚµÄÈ«ÐÂÊӽǣ¬¼ÈÓÐÀíÂÛÉî¶È£¬Ò²ÓÐÏÖʵӦÓõÄÁ¬Ïµ¡£ÏëÏóһϣ¬ÕÆÎպýӿڣ¬¾ÍÏñÕÆÎÕÁ˴¡°Î´À´¿É±ä¡¢¸üÎȹ̡±µÄÇÅÁºµÄÔ¿³×£¬ÎÞÂÛÊÇÉè¼ÆÖØ´óϵͳ£¬Õվɽâ¾öÒ»Ñùƽ³£±à³ÌÖеĶàÑùÐèÇó£¬Ëü¶¼ÄܰïÄãʰ빦±¶¡£