- 注意:本程序仅模拟播放器功能,点击按钮时只会输出一句话,并未真正实现播放。
对接口
的理解,见我的另一篇博客,里面有详细说明:【C# interface接口】对接口的理解、接口的使用方式(最通俗的解释)
功能
点击“MP3”,显示“成功选择MP3”
点击下方功能按钮,显示反馈信息
思路
声明一个接口Iplayer
,接口具有上述函数定义(播放,停止,暂停,上一首,下一首)。然后定义两个子类MP3 AVI
,继承于接口Iplayer
,同样拥有接口定义的所有功能。
用户选择MP3/AVI
时,将实例化的子类MP3/AVI
赋值给实例化的接口iplayer
,这样就能在选择功能(播放,停止,暂停,上一首,下一首)时,直接调用接口的函数,而不必分情况调用子类的函数。
代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 第五章_接口
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Iplayer iplayer;
//MP3 mp3;
//AVI avi;
//new mp3
private void button1_Click(object sender, EventArgs e)
{
MP3 mp3 = new MP3(); //(same as) MP3 mp3; mp3 = new MP3();
iplayer = (Iplayer)mp3; //cast, then assign to Interface
textBox1.Text = "成功选择MP3";
}
//new avi
private void button2_Click(object sender, EventArgs e)
{
AVI avi = new AVI();
iplayer = (Iplayer)avi; //cast, then assign to Interface
textBox1.Text = "成功选择AVI";
}
//play
private void button5_Click(object sender, EventArgs e)
{
textBox1.Text = iplayer.Play();
}
//pre
private void button3_Click(object sender, EventArgs e)
{
textBox1.Text = iplayer.Pre();
}
//stop
private void button4_Click(object sender, EventArgs e)
{
textBox1.Text = iplayer.Stop();
}
//pause
private void button6_Click(object sender, EventArgs e)
{
textBox1.Text = iplayer.Pause();
}
//next
private void button7_Click(object sender, EventArgs e)
{
textBox1.Text = iplayer.Next();
}
}
interface Iplayer
{
string Play(); //播放
string Stop(); //停止
string Pause(); //暂停
string Pre(); //上一首
string Next(); //下一首
}
public class MP3 : Iplayer
{
public string Next()
{
return "播放下一首MP3歌曲!";
}
public string Pause()
{
return "暂停播放MP3歌曲!";
}
public string Play()
{
return "正在播放MP3歌曲!";
}
public string Pre()
{
return "播放上一首MP3歌曲!";
}
public string Stop()
{
return "停止播放MP3歌曲!";
}
}
public class AVI : Iplayer
{
public string Next()
{
return "播放下一首AVI视频!";
}
public string Pause()
{
return "暂停播放AVI视频!";
}
public string Play()
{
return "正在播放AVI视频!";
}
public string Pre()
{
return "播放上一首AVI视频!";
}
public string Stop()
{
return "停止播放AVI视频!";
}
}
}