Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
´ÓʵÀý̸OOP¡¢¹¤³§Ä£Ê½ºÍÖØ¹¹
 
×÷ÕߣºLonely Shadow À´Ô´£º²©¿ÍÔ°  ·¢²¼ÓÚ 2015-01-04
  4713  次浏览      27
 

ÓÐÁ˳á°ò²ÅÄÜ·É£¬ ǷȱÁé»îµÄ´úÂë¾ÍÏó¶³»µÁ˳á°òµÄÄñ¶ù¡£²»ÄÜ·ÉÏ裬¾ÍÉÙÁ˼¸ÐíÁ鶯µÄÆøÔÏ¡£ÎÒÃÇÐèÒª¸ø´úÂë´øÈ¥ÎÂůµÄÑô¹â£¬ Èý©ÀäµÄ³á°òÖØÐÂ·ÉÆðÀ´¡£

½áºÏʵÀý£¬ ͨ¹ýÓ¦ÓÃOOP¡¢Éè¼ÆÄ£Ê½ºÍÖØ¹¹£¬Äã»á¿´µ½´úÂëÊÇÔõÑùÒ»²½Ò»²½¸´»îµÄ¡£

ΪÁ˸üºÃµÄÀí½âÉè¼ÆË¼Ï룬 ʵÀý¾¡¿ÉÄܼòµ¥»¯¡£ µ«Ëæ×ÅÐèÇóµÄÔö¼Ó£¬³ÌÐò½«Ô½À´Ô½¸´ÔÓ¡£

´Ëʱ¾ÍÓÐÐÞ¸ÄÉè¼ÆµÄ±ØÒª£¬ ÖØ¹¹ºÍÉè¼ÆÄ£Ê½¾Í¿ÉÒÔÅÉÉÏÓó¡ÁË¡£ ×îºóµ±Éè¼Æ½¥Ç÷ÍêÃÀºó£¬Äã»á·¢ÏÖ£¬ ¼´Ê¹ÐèÇó²»¶ÏÔö¼Ó£¬ÄãÒ²¿ÉÒÔÉñÇ寸ÏУ¬²»ÓÃΪ´úÂëÉè¼Æ¶ø·³ÄÕÁË¡£

¼Ù¶¨ÎÒÃÇÒªÉè¼ÆÒ»¸öýÌå²¥·ÅÆ÷¡£ ¸ÃýÌå²¥·ÅÆ÷Ä¿ ǰֻ֧³ÖÒôƵÎļþ mp3 ºÍ wav¡£

Èç¹û²»Ì¸Éè¼Æ£¬ Éè¼Æ³öÀ´µÄ²¥·ÅÆ÷¿ÉÄܼܺòµ¥£º

public class MediaPlayer
{
private void PlayMp3()
{
MessageBox.Show("Play the mp3 file.");
}
private void PlayWav()
{
MessageBox.Show("Play the wav file.");
}
public void Play(string audioType)
{
switch (audioType.ToLower())
{
case ("mp3"):
PlayMp3();
break;
case ("wav"):
PlayWav();
break;
}
}
}

¼òµ¥µÄ²¥·ÅÆ÷ʵÏÖ´úÂë

×ÔÈ»£¬Äã»á·¢ÏÖÕâ¸öÉè¼Æ·Ç³£µÄÔã¸â¡£ ÒòΪËü¸ù±¾Ã»ÓÐΪδÀ´µÄÐèÇó±ä¸üÌṩ×îÆðÂëµÄÀ©Õ¹¡£

Èç¹ûÄãµÄÉè¼Æ½á¹ûÊÇÕâÑù£¬ ÄÇôµ±ÄãΪӦ½Ó²»Ï¾µÄÐèÇó±ä¸ü¶ø½¹Í·ÀöîµÄʱºò£¬ Äã¿ÉÄܸüÏ£ÍûÈÃÕâ·ÝÉè¼Æµ½ËüÓ¦¸ÃÈ¥µÄµØ·½£¬ ¾ÍÊÇ×ÀÃæµÄ»ØÊÕÕ¾¡£

×Ðϸ·ÖÎöÕâ¶Î´úÂ룬 ËüÆäʵÊÇÒ»ÖÖ×î¹ÅÀϵÄÃæÏò½á¹¹µÄÉè¼Æ¡£ Èç¹ûÄãÒª²¥·ÅµÄ²»½ö½öÊÇ mp3 ºÍ wav,Äã»á²»¶ÏÔö¼ÓÏàÓ¦µØ²¥·Å·½·¨£¬ È»ºóÈà switch ×Ó¾äÔ½À´Ô½³¤£¬ Ö±ÖÁ´ïµ½ÄãÊÓÏß¿´²»µ½µÄµØ²½¡£

ºÃ°É£¬ÎÒÃÇÏÈÀ´ÌåÑé¶ÔÏóµÄ¾«Éñ¡£¸ù¾ÝOOPµÄ˼Ï룬ÎÒÃÇÓ¦¸Ã°Émp3ºÍwav¿´×÷ÊÇÒ»¸ö¶ÓÀïµÄ¶ÔÏó£¬ÄÇôÊÇÕâÑùÂð£º

public class MP3
{
public void Play()
{
MessageBox.Show("Play the mp3 file.");
}
}
public class WAV
{
public void Play()
{
MessageBox.Show("Play the wav file.");
}
}

ÌáÈ¡MP3ºÍWAVÀà

ºÃÑùµÄ£¬ÄãÒѾ­ÖªµÀÔõô½¨Á¢¶ÔÏóÁË¡£¸ü¿ÉϲµÄÊÇ£¬ÄãÔÚ²»Öª²»¾õÖÐÓ¦ÓÃÁËÖØ¹¹µÄ·½·¨£¬°ÑÔ­À´ÄǸöÀ¬»øÉè¼ÆÖеķ½·¨Ãû×Ö¸ÄΪÁËͳһµÄPlay()·½·¨¡£ÄãÔÚºóÃæµÄÉè¼ÆÖУ¬»á·¢ÏÖÕâÑù¸ÄÃûÊǶàôµÄ¹Ø¼ü£¡

µ«ËƺõÄ㲢ûÓл÷ÖÐÒªº¦£¬ÒÔÏÖÔڵķ½Ê½È¥¸ü¸ÄMediaPlayerµÄ´úÂ룬ʵÖʲ¢Ã»Óжà´óµÄ±ä»¯¡£

¼ÈÈ»mp3ºÍwav¶¼ÊôÓÚÒôƵÎļþ£¬ËûÃǶ¼¾ßÓÐÒôƵÎļþµÄ¹²ÐÔ£¬ÎªÊ²Ã´²»ÎªËûÃǽ¨Á¢Ò»¸ö¹²Í¬µÄ¸¸ÀàÄØ£º

public class AudioMedia
{
public void Play()
{
MessageBox.Show("Play the AudioMedia file.");
}
}

ÌáÈ¡¸¸ÀàAudioMedia.cs

ÏÖÔÚÎÒÃÇÒýÈëÁ˼̳еÄ˼Ï룬 OOP Ò²ËãÊÇÏóÄ£ÏóÑùÁË¡£

µÃÒâÖ®Ó࣬ »¹ÊÇÈÏÕæ·ÖÎöÏÖʵÊÀ½ç°É¡£ ÆäʵÔÚÏÖʵÉú»îÖУ¬ ÎÒÃDz¥·ÅµÄÖ»»áÊÇijÖÖ¾ßÌåÀàÐ͵ÄÒôƵÎļþ£¬ Òò´ËÕâ¸öAudioMedia ÀಢûÓÐʵ¼ÊʹÓõÄÇé¿ö¡£¶ÔÓ¦ÔÚÉè¼ÆÖУ¬ ¾ÍÊÇ£º Õâ¸öÀàÓÀÔ¶²»»á±»ÊµÀý»¯¡£

ËùÒÔ£¬ »¹µÃ¶¯Ò»ÏÂÊÖÊõ£¬ ½«Æä¸ÄΪ³éÏóÀà¡£ ºÃÁË£¬ ÏÖÔڵĴúÂëÓеã OOP µÄ¸Ð¾õÁË£º

public abstract class AudioMedia
{
public abstract void Play();
}
public class MP3 : AudioMedia
{
public override void Play()
{
MessageBox.Show("Play the mp3 file.");
}
}
public class WAV : AudioMedia
{
public override void Play()
{
MessageBox.Show("Play the wav file.");
}
}
public class MediaPlayer
{
public void Play(AudioMedia media)
{
media.Play();
}
}

½«¸¸Àà¸ÄΪ³éÏóÀàºóµÄ½á¹¹

¿´¿´ÏÖÔÚµÄÉè¼Æ£¬ ¼´Âú×ãÁËÀàÖ®¼äµÄ²ã´Î¹ØÏµ£¬ ͬʱÓÖ±£Ö¤ÁËÀàµÄ×îС»¯Ô­Ôò£¬ ¸üÀûÓÚÀ©Õ¹£¨µ½ÕâÀÄã»á·¢ÏÖ play ·½·¨Ãû¸ÄµÃ¶àÓбØÒª£©¡£

¼´Ê¹ÄãÏÖÔÚÓÖÔö¼ÓÁË¶Ô WMA ÎļþµÄ²¥·Å£¬ Ö»ÐèÒªÉè¼Æ WMA À࣬ ²¢¼Ì³Ð AudioMedia£¬ÖØÐ´ Play ·½·¨¾Í¿ÉÒÔÁË£¬ MediaPlayerÀà¶ÔÏóµÄ Play ·½·¨¸ù±¾²»Óøı䡣ÊDz»Êǵ½´Ë¾Í¸Ã»­ÉÏÔ²ÂúµÄ¾äºÅÄØ£¿

È»ºóµó×êµÄ¿Í»§ÊÇÓÀÔ¶²»»áÂú×ãµÄ£¬ ËûÃÇÔÚ±§Ô¹Õâ¸öýÌå²¥·ÅÆ÷ÁË¡£ÒòΪËûÃDz»ÏëÔÚ¿´×ãÇò±ÈÈüµÄʱºò£¬ Ö»Ìýµ½Ö÷³ÖÈ˵Ľâ˵£¬ ËûÃǸü¿ÊÍû¿´µ½×ãÇòÃ÷ÐÇÔÚÇò³¡±¼ÅܵÄÓ¢×Ë¡£

Ò²¾ÍÊÇ˵£¬ ËûÃÇÏ£ÍûÄãµÄýÌå²¥·ÅÆ÷Äܹ»Ö§³ÖÊÓÆµÎļþ¡£ÄãÓÖ¸ÃÍ´¿àÁË£¬ ÒòΪÔÚ¸ü¸ÄÓ²¼þÉè¼ÆµÄͬʱ£¬ Ô­À´µÄÈí¼þÉè¼Æ½á¹¹Ëƺõ³öÁËÎÊÌâ¡£ ÒòΪÊÓÆµÎļþºÍÒôƵÎļþÓкܶ಻ͬµÄµØ·½£¬ Äã¿É²»ÄÜ͵ÀÁ£¬ ÈÃÊÓÆµÎļþ¶ÔÏóÈÏÒôƵÎļþ×÷¸¸Ç×°¡¡£

ÄãÐèҪΪÊÓÆµÎļþÉè¼ÆÁíÍâµÄÀà¶ÔÏóÁË£¬ ¼ÙÉèÎÒÃÇÖ§³Ö RM ºÍ MPEG ¸ñʽµÄÊÓÆµ£º

public abstract class VideoMedia
{
public abstract void Play();
}
public class RM : VideoMedia
{
public override void Play()
{
MessageBox.Show("Play the rm file.");
}
}
public class MPEG : VideoMedia
{
public override void Play()
{
MessageBox.Show("Play the mpeg file. ");
}
}

ÁíÍâÉè¼ÆÊÓÆµ²¥·ÅÀà

Ôã¸âµÄÊÇ£¬ Äã²»ÄÜÒ»ÀÍÓÀÒݵØÏíÊÜÔ­ÓÐµÄ MediaPlayer ÀàÁË¡£ ÒòΪÄãÒª²¥·ÅµÄ RM Îļþ²¢²»ÊÇ AudioMedia µÄ×ÓÀà¡£

²»¹ý²»ÓÃ׿±£¬ ÒòΪ½Ó¿Ú Õâ¸öÀûÆ÷Ä㻹ûÓÐÓÃÉÏ£¨ËäÈ»ÄãÒ²¿ÉÒÔÓóéÏóÀ࣬ µ«ÔÚ C#ÀïÖ»Ö§³ÖÀàµÄµ¥¼Ì³Ð£©¡£ËäÈ»ÊÓÆµºÍÒôƵ¸ñʽ²»Í¬£¬ ±ðÍüÁË£¬ ËûÃǶ¼ÊÇýÌåÖеÄÒ»ÖÖ£¬ºÜ¶àʱºò£¬ ËûÃÇÓÐÐí¶àÏàËÆµÄ¹¦ÄÜ£¬ ±ÈÈç²¥·Å¡£

¸ù¾Ý½Ó¿ÚµÄ¶¨Ò壬ÄãÍêÈ«¿ÉÒÔ½«Ïàͬ¹¦ÄܵÄһϵÁжÔÏóʵÏÖͬһ¸ö½Ó¿Ú£º

public interface IMedia
{
void Play();
}
public abstract class AudioMedia : IMedia
{
public abstract void Play();
}
public abstract class VideoMedia : IMedia
{
public abstract void Play();
}

ÌáÈ¡ÊÓÆµÓëÒôƵµÄ½Ó¿Ú

ÔÙ¸ü¸ÄһϠMediaPlayer µÄÉè¼Æ¾Í OK ÁË£º

public class MediaPlayer
{
public void Play(IMedia media)
{
media.Play();
}
}

ÏÖÔÚ¿ÉÒÔ×ܽáһϣ¬´Ó MediaPlayer ÀàµÄÑݱ䣬ÎÒÃÇ¿ÉÒԵóöÕâÑùÒ»¸ö½áÂÛ£ºÔÚµ÷ÓÃÀà¶ÔÏóµÄÊôÐԺͷ½·¨Ê±£¬ ¾¡Á¿±ÜÃ⽫¾ßÌåÀà¶ÔÏó×÷Ϊ´«µÝ²ÎÊý£¬ ¶øÓ¦´«µÝÆä³éÏó¶ÔÏó£¬ ¸üºÃµØÊÇ´«µÝ½Ó¿Ú£¬ ½«Êµ¼ÊµÄµ÷Óú;ßÌå¶ÔÏóÍêÈ«°þÀ뿪£¬ÕâÑù¿ÉÒÔÌá¸ß´úÂëµÄÁé»îÐÔ¡£

²»¹ý£¬ ÊÂÇ鲢ûÓÐÍê¡£ ËäȻһÇп´ÆðÀ´¶¼ºÜÍêÃÀÁË£¬ µ«ÎÒÃǺöÂÔÁËÕâ¸öÊÂʵ£¬ ¾ÍÊÇÍü¼ÇÁË MediaPlayer µÄµ÷ÓÃÕß¡£

»¹¼ÇµÃÎÄÕÂ×ʼµÄ switch Óï¾äÂ𣿠¿´ÆðÀ´ÎÒÃÇÒѾ­·Ç³£Æ¯ÁÁµØ³ýµôÁËÕâ¸ö·³ÄÕ¡£ÊÂʵÉÏ£¬ÎÒÔÚÕâÀïÍæÁËÒ»¸ö¹î¼Æ£¬ ½« switch Óï¾äÑÓºóÁË¡£ËäÈ»ÔÚ MediaPlayerÖУ¬ ´úÂëÏԵøɾ»ÀûÂ䣬 Æäʵ·³ÄÕÖ»²»¹ýÊÇת¼Þµ½ÁË MediaPlayer µÄµ÷ÓÃÕßÄÇÀï¡£

ÀýÈ磬 ÔÚÖ÷³ÌÐò½çÃæÖУº

public void BtnPlay_Click(object sender, EventArgs e)
{
IMedia media;
switch (cbbMediaType.SelectItem.ToString().ToLower())
{
case ("mp3"):
media = new MP3();
break;
case ("wav"):
media = new WAV();
break;
//ÆäËüÀàÐÍÂÔ£»
}
MediaPlayer player = new MediaPlayer();
player.Play(media);
}

µã»÷¡°²¥·Å¡±°´Å¥

Óû§Í¨¹ýÑ¡Ôñ cbbMediaType ×éºÏ¿òµÄÑ¡Ï¾ö¶¨²¥·ÅÄÄÒ»ÖÖÎļþ£¬ È»ºóµ¥»÷ Play °´Å¥Ö´ÐС£ÏÖÔÚ¸ÃÉè¼ÆÄ£Ê½·ÛÄ«µÇ³¡ÁË£¬ÕâÖÖ¸ù¾Ý²»Í¬Çé¿ö´´½¨²»Í¬ÀàÐ͵ķ½Ê½£¬ ¹¤³§Ä£Ê½ÊÇ×îÄÃÊֵġ£

ÏÈ¿´¿´ÎÒÃǵŤ³§ÐèÒªÉú²úÄÄЩ²úÆ·ÄØ £¿ ËäÈ»ÕâÀïÓÐÁ½ÖÖ²»Í¬ÀàÐ͵ÄýÌåAudioMedia ºÍ VideoMedia£¨ÒÔºó¿ÉÄܸü¶à£©£¬ µ«ËüÃÇͬʱÓÖ¶¼ÊµÏÖ IMedia ½Ó¿Ú£¬ËùÒÔÎÒÃÇ¿ÉÒÔ½«ÆäÊÓΪһÖÖ²úÆ·£¬Óù¤³§·½·¨Ä£Ê½¾Í¿ÉÒÔÁË¡£

Ê×ÏÈÊǹ¤³§½Ó¿Ú£º

public interface IMediaFactory
2 {
3 IMedia CreateMedia();
4 }

È»ºóΪÿÖÖýÌåÎļþ¶ÔÏó´î½¨Ò»¸ö¹¤³§£¬ ²¢Í³Ò»ÊµÏÖ¹¤³§½Ó¿Ú£º

public class MP3MediaFactory : IMediaFactory
{
public IMedia CreateMedia()
{
return new MP3();
}
}
public class RMMediaFactory : IMediaFactory
{
public IMedia CreateMedia()
{
return new RM();
}
}
//ÆäËü¹¤³§ÂÔ£»

дµ½ÕâÀ Ò²ÐíÓÐÈË»áÎÊ£¬ Ϊʲô²»Ö±½Ó¸ø AudioMedia ºÍ VideoMedia Àà´î½¨¹¤³§ÄØ£¿

ºÜ¼òµ¥£¬ ÒòΪÔÚ AudioMedia ºÍ VideoMedia ÖУ¬ ·Ö±ð»¹Óв»Í¬µÄÀàÐÍÅÉÉú£¬ Èç¹ûΪËüÃǴ¹¤³§£¬ ÔòÔÚ CreateMedia()·½·¨ÖУ¬ ÈÔȻҪʹÓà SwitchÓï¾ä¡£¶øÇÒ¼ÈÈ»ÕâÁ½¸öÀ඼ʵÏÖÁË IMedia½Ó¿Ú £¬¿ÉÒÔÈÏΪÊÇÒ»ÖÖÀàÐÍ£¬ Ϊʲô»¹ÒªÄÇôÂ鷳ȥÇ붯³éÏ󹤳§Ä£Ê½£¬ À´Éú³ÉÁ½Àà²úÆ·ÄØ£¿

¿ÉÄÜ»¹»áÓÐÈËÎÊ£¬ ¼´Ê¹ÄãʹÓÃÕâÖÖ·½Ê½£¬ ÄÇôÔÚÅжϾßÌå´´½¨Äĸö¹¤³§µÄʱºò£¬ ²»ÊÇÒ²ÒªÓõ½ switch Óï¾äÂð£¿

ÎÒ³ÐÈÏÕâÖÖ¿´·¨ÊǶԵġ£²»¹ýʹÓù¤³§Ä£Ê½£¬ ÆäÖ±½ÓºÃ´¦²¢·ÇÊÇÒª½â¾ö switch Óï¾äµÄÄÑÌ⣬ ¶øÊÇÒªÑÓ³Ù¶ÔÏóµÄÉú³É£¬ ÒÔ±£Ö¤µÄ´úÂëµÄÁé»îÐÔ¡£ µ±È»£¬ÎÒ»¹ÓÐ×îºóÒ»ÕÐɱÊÖïµÃ»ÓÐʹ³öÀ´£¬µ½ºóÃæÄã»á·¢ÏÖ£¬ switch Óï¾äÆäʵ»áÍêÈ«Ïûʧ¡£»¹ÓÐÒ»¸öÎÊÌ⣬ ¾ÍÊÇÕæµÄÓбØÒªÊµÏÖ AudioMedia ºÍ VideoMedia Á½¸ö³éÏóÀàÂ𣿠ÈÃÆä×ÓÀàÖ±½ÓʵÏÖ½Ó¿Ú ²»¸ü¼òµ¥£¿ ¶ÔÓÚ±¾ÎÄÌáµ½µÄÐèÇó£¬ÎÒÏëÄãÊǶԵģ¬ µ«²»Åųý AudioMedia ºÍVideoMedia ËüÃÇ»¹»á´æÔÚÇø±ð¡£

ÀýÈçÒôƵÎļþÖ»ÐèÒªÌṩ¸øÉù¿¨µÄ½Ó¿Ú£¬ ¶øÊÓÆµÎļþ»¹ÐèÒªÌṩ¸øÏÔ¿¨µÄ½Ó¿Ú¡£ Èç¹ûÈà MP3¡¢ WAV¡¢ RM¡¢ MPEG Ö±½ÓʵÏÖ IMedia ½Ó¿Ú£¬ ¶ø²»Í¨¹ýAudioMedia ºÍ VideoMedia£¬ ÔÚÂú×ãÆäËüÐèÇóµÄÉè¼ÆÉÏÒ²ÊDz»ºÏÀíµÄ¡£ µ±È»ÕâÒѾ­²»°üÀ¨ÔÚ±¾Îĵķ¶³ëÁË¡£

ÏÖÔÚÖ÷³ÌÐò½çÃæ·¢ÉúÁËÉÔÐíµÄ¸Ä±ä£º

public void BtnPlay_Click(object sender, EventArgs e)
{
IMediaFactory factory = null;
switch (cbbMediaType.SelectItem.ToString().ToLower())
{
case ("mp3"):
factory = new MP3MediaFactory();
break;
case ("wav"):
factory = new WAVMediaFactory();
break;
//ÆäËûÀàÐÍÂÔ£»
}
MediaPlayer player = new MediaPlayer();
player.Play(factory.CreateMedia());
}

дµ½ÕâÀ ÎÒÃÇÔٻعýÍ·À´¿´ MediaPlayer Àà¡£

Õâ¸öÀàÖУ¬ÊµÏÖÁË Play ·½·¨£¬ ²¢¸ù¾Ý´«µÝµÄ²ÎÊý£¬ µ÷ÓÃÏàӦýÌåÎļþµÄ Play ·½·¨¡£ ÔÚûÓй¤³§¶ÔÏóµÄʱºò£¬ ¿´ÆðÀ´Õâ¸öÀà¶ÔÏóÔËÐеúܺá£

Èç¹ûÊÇ×÷Ϊһ¸öÀà¿â»ò×é¼þÉè¼ÆÕßÀ´¿´£¬ ËûÌṩÁËÕâÑùÒ»¸ö½Ó¿Ú£¬ ¹©Ö÷½çÃæ³ÌÐòÔ±µ÷ÓᣠȻ¶øÔÚÒýÈ빤³§Ä£Ê½ºó£¬ ÔÚÀïÃæÊ¹Óà MediaPlayer ÀàÒѾ­¶àÓàÁË¡£

ËùÒÔ£¬ÎÒÃÇÒª¼ÇסµÄÊÇ£¬ ÖØ¹¹²¢²»½ö½öÊÇÍùÔ­À´µÄ´úÂëÌí¼ÓеÄÄÚÈÝ¡£ µ±ÎÒÃÇ·¢ÏÖһЩ²»±ØÒªµÄÉè¼ÆÊ±£¬ »¹ÐèÒª¹û¶ÏµØÉ¾µôÕâЩÈßÓà´úÂë¡£

public void BtnPlay_Click(object sender, EventArgs e)
{
IMediaFactory factory = null;
switch (cbbMediaType.SelectItem.ToString().ToLower())
{
case ("mp3"):
factory = new MP3MediaFactory();
break;
case ("wav"):
factory = new WAVMediaFactory();
break;
//ÆäËûÀàÐÍÂÔ£»
}
IMedia media = factory.CreateMedia();
media.Play();
}

Èç¹ûÄãÔÚ×ʼûÓÐÌå»áµ½ IMedia ½Ó¿Ú µÄºÃ´¦£¬ ÔÚÕâÀïÄãÓ¦¸ÃÒѾ­Ã÷°×ÁË¡£ÎÒÃÇÔÚ¹¤³§ÖÐÓõ½Á˸ýӿڣ» ¶øÔÚÖ÷³ÌÐòÖУ¬ ÈÔȻҪʹÓÃ¸Ã½Ó¿Ú ¡£Ê¹ÓýӿÚÓÐʲôºÃ´¦£¿ÄǾÍÊÇÄãµÄÖ÷³ÌÐò¿ÉÒÔÔÚûÓоßÌåÒµÎñÀàµÄʱºò£¬ ͬÑù¿ÉÒÔ±àÒëͨ¹ý¡£Òò´Ë£¬ ¼´Ê¹ÄãÔö¼ÓÁËеÄÒµÎñ£¬ÄãµÄÖ÷³ÌÐòÊDz»ÓøĶ¯µÄ¡£

²»¹ý£¬ ÏÖÔÚ¿´ÆðÀ´£¬Õâ¸ö²»ÓøĶ¯Ö÷³ÌÐòµÄÀíÏ룬 ÒÀȻûÓÐÍê³É¡£¿´µ½ÁË Âð£¿ÔÚBtnPlay_Click()ÖУ¬ ÒÀÈ»Óà new ´´½¨ÁËһЩ¾ßÌåÀàµÄʵÀý¡£

Èç¹ûûÓÐÍêÈ«ºÍ¾ßÌåÀà·Ö¿ª£¬ Ò»µ©¸ü¸ÄÁ˾ßÌåÀàµÄÒµÎñ£¬ÀýÈçÔö¼ÓÁËÐµĹ¤³§À࣬ ÈÔÈ»ÐèÒª¸Ä±äÖ÷³ÌÐò£¬ ºÎ¿öÌÖÑáµÄ switchÓï¾äÈÔÈ»´æÔÚ£¬ ËüºÃÏñÊdzá°òÉÏ×ÌÉúµÄ¶¾Áö£¬ ÌáʾÎÒÃÇ£¬ ËäÈ»³á°òÒѾ­´Ó½©ÀäµÄÊÀ½çÀ︴»î£¬µ«ÕâË«³á°ò»¹ÊÇÓв¡µÄ£¬ ²¢²»ÄÜÕý³£µØ·ÉÏè¡£

ÊÇʹÓÃÅäÖÃÎļþµÄʱºòÁË¡£ÎÒÃÇ¿ÉÒÔ°ÑÿÖÖýÌåÎļþÀàÀàÐ͵ÄÏàÓ¦ÐÅÏ¢·ÅÔÚÅäÖÃÎļþÖУ¬ È»ºó¸ù¾ÝÅäÖÃÎļþÀ´Ñ¡Ôñ´´½¨¾ßÌåµÄ¶ÔÏó¡£ ²¢ÇÒ£¬ÕâÖÖ´´½¨¶ÔÏóµÄ·½·¨½«Ê¹Ó÷´ÉäÀ´Íê³É¡£

Ê×ÏÈ£¬ ´´½¨ÅäÖÃÎļþ£º

 <appSettings>
2 <add key="mp3" value="WingProject.MP3Factory" />
3 <add key="wav" value="WingProject.WAVFactory" />
4 <add key="rm" value="WingProject.RMFactory" />
5 <add key="mpeg" value="WingProject. MPEGFactory" />
6 </appSettings>

È»ºó£¬ ÔÚÖ÷³ÌÐò½çÃæµÄ Form_Load ʼþÖУ¬ ¶ÁÈ¡ÅäÖÃÎļþµÄ ËùÓÐ key Öµ£¬ Ìî³äcbbMediaType ×éºÏ¿ò¿Ø¼þ£º

public void Form_Load(object sender, EventArgs e)
2 {
3 cbbMediaType.Items.Clear();
4 foreach (string key in ConfigurationSettings.AppSettings.AllKeys)
5 {
6 cbbMediaType.Item.Add(key);
7 }
8 cbbMediaType.SelectedIndex = 0;
9 }

×îºó£¬ ¸ü¸ÄÖ÷³ÌÐòµÄ Play °´Å¥µ¥»÷ʼþ£º

public void BtnPlay_Click(object sender, EventArgs e)
2 {
3 string mediaType = cbbMediaType.SelectItem.ToString().ToLower();
4 string factoryDllName = ConfigurationSettings.AppSettings[mediaType].ToString();
5 //MediaLibrayΪÒýÓõÄýÌåÎļþ¼°¹¤³§µÄ³ÌÐò¼¯;
6 IMediaFactory factory = (IMediaFactory)Activator.CreateInstance
7 ("MediaLibrary", factoryDllName).Unwrap();
8 IMedia media = factory.CreateMedia();
9 media.Play();
10 }

ÏÖÔÚÄñ¶ùµÄ³á°ò²»½ö½ö¸´»î£¬ÓÐÁË¿ÉÒԷɵÄÄÜÁ¦£»Í¬Ê±ÎÒÃÇ»¹¸³ÓèÕâË«³á°ò¸üÇ¿µÄ¹¦ÄÜ£¬Ëü¿ÉÒԷɵøü¸ß£¬ ·ÉµÃ¸üÔ¶£¡ÏíÊÜ×ÔÓÉ·ÉÏèµÄã«Òâ°É¡£

ÉèÏëһϣ¬ Èç¹ûÎÒÃÇÒªÔö¼ÓijÖÖýÌåÎļþµÄ²¥·Å¹¦ÄÜ£¬ Èç AVIÎļþ¡£ ÄÇô£¬ ÎÒÃÇÖ»ÐèÒªÔÚÔ­À´µÄÒµÎñ³ÌÐò¼¯Öд´½¨ AVI À࣬ ²¢ÊµÏÖ IMedia ½Ó¿Ú £¬ ͬʱ¼Ì³Ð VideoMedia Àà¡£

ÁíÍâÔÚ¹¤³§ÒµÎñÖд´½¨ AVIMediaFactory À࣬ ²¢ÊµÏÖ IMediaFactory ½Ó¿Ú¡£

¼ÙÉèÕâ¸öÐµĹ¤³§ÀàÐÍΪ WingProject.AVIFactory£¬ ÔòÔÚÅäÖÃÎļþÖÐÌí¼ÓÈçÏÂÒ»ÐУº

<add key="avi" value="WingProject.AVIFactory" />

¶øÖ÷³ÌÐòÄØ£¿ ¸ù±¾²»ÐèÒª×öÈκθı䣬 ÉõÖÁ²»ÓÃÖØÐ±àÒ룬ÕâË«³á°òÕÕÑù¿ÉÒÔ×Ô ÈçµØ·ÉÐУ¡

   
4713 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
Visitor Parttern
ÓÉ±í¼°À￴ģʽ
Éè¼ÆÄ£Ê½Ëæ±ÊϵÁÐ
ÉîÈëdz³öÉè¼ÆÄ£Ê½-½éÉÜ
.NETÖеÄÉè¼ÆÄ£Ê½
Ïà¹ØÅàѵ¿Î³Ì

J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Ó¦ÓÃģʽÉè¼ÆJavaÆóÒµ¼¶Ó¦ÓÃ
Éè¼ÆÄ£Ê½Ô­ÀíÓëÓ¦ÓÃ
J2EEÉè¼ÆÄ£Ê½Ö¸ÄÏ
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Éè¼ÆÄ£Ê½¼°ÆäCSharpʵÏÖ

ijµçÁ¦¹«Ë¾ Éè¼ÆÄ£Ê½Ô­Àí
À¶ÍØÆË Éè¼ÆÄ£Ê½Ô­Àí¼°Ó¦ÓÃ
ÎÀÐǵ¼º½ UML & OOAD
ÌÀɭ·͸Ñз¢ÖÐÐÄ UML& OOAD
Öдïµçͨ Éè¼ÆÄ£Ê½Ô­Àí
Î÷ÃÅ×Ó Ç¶ÈëʽÉè¼ÆÄ£Ê½
 
 
 
¡¡