设计模式之工厂模式(设计之道代码理解)

//媒体接口
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> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值