理解:旧的接口不能被客户直接调用,需要第三方类进行转换。就好像USB转换器一样
代码:
using System.Windows.Forms;
namespace DesignMode.Adatper
{
//原版英文电影
public class Movie_English
{
public void PlayEnglish()
{
MessageBox.Show("英文电影");
}
}
//观众要看的中文电影
public class Movie_Chinese
{
public virtual void PlayChinese()
{
MessageBox.Show("中文电影");
}
}
//继承放中文电影的接口
public class Translate : Movie_Chinese
{
private Movie_English _english = new Movie_English();
//虽然放的是英文电影,但观众调用的是播放中文的方法
public override void PlayChinese()
{
_english.PlayEnglish();
}
}
}
namespace DesignMode.Adatper
{
//原版英文电影
public class Movie_English
{
public void PlayEnglish()
{
MessageBox.Show("英文电影");
}
}
//观众要看的中文电影
public class Movie_Chinese
{
public virtual void PlayChinese()
{
MessageBox.Show("中文电影");
}
}
//继承放中文电影的接口
public class Translate : Movie_Chinese
{
private Movie_English _english = new Movie_English();
//虽然放的是英文电影,但观众调用的是播放中文的方法
public override void PlayChinese()
{
_english.PlayEnglish();
}
}
}
客户端代码:
private void btn_Adapter_Click(object sender, EventArgs e)
{
//观众只需要告诉翻译者要看中文电影
Translate translate = new Translate();
translate.PlayChinese();}
{
//观众只需要告诉翻译者要看中文电影
Translate translate = new Translate();
translate.PlayChinese();}