//媒体接口
public interface IMedia
{
void Play();
}
//音频抽象类
public abstract class AudioMedia:IMedia
{
public abstract void Play();
}
//视频抽象类
public abstract class VideoMedia:IMedia
{
public abstract void Play();
}
//音频MP3类
public class MP3:AudioMedia
{
public override void Play()
{
messagebox.show("Play the MP3 file.");
}
}
//视频RM类
public class RM:VideoMedia
{
public override void Play()
{
messagebox.show("Play the RM file.")
}
}
//工厂方法接口
public interface IMediaFactory
{
IMedia CreateMedia();
}
//MP3工厂方法类
public class MP3MediaFactory:IMediaFacrory
{
public IMedia CreateMedia()
{
return new MP3();
}
}
public class RMMediaFactory:IMediaFactory
{
public IMedia CreateMedia()
{
return new RM();
}
}
//各个类在程序中的实际应用
public void Form_Load(object sender,EventArgs e)
{
cbbMediaType.Items.Clear();
foreach(string key in ConfigurationSettings.AppSettings.AllKeys)
{
cbbMediaType.Item.Add(key);
}
cbbMediaType.SelectedIndex = 0;
}
public void BtnPlay_Click(object sender,EventArgs e)
{
string mediaType = cbbMediaType.SelectItem.ToString().ToLower();
string factoryDllName = ConfigurationSetting.AppSettings[mediaType].ToString();
IMediaFactory factory = (IMediaFactory)Activator.CreateInstance("MediaLibrary",facroryDllName).Unwrap();
IMedia media = factory.CreateMedia();
media.Play();
}
//配置文件
<appSettings>
<add key="mp3" value = "WingProject.MP3Factory">
<add key="RM" value = "WingProject.RMFactory">
</appSettings>