您的位置:首页 > 其它

九.结构型设计模式——Adapter Pattern(适配器模式)

2010-11-01 21:31 344 查看

定义

  将一个接口转换成客户想要的另一个接口,适配器模式使接口不兼容的那些类可以一起工作。

  UML类图如下:

  代码

//假定系统原来已定义Clean接口
public interface IClean
{
void MakeClean();
}
//Office类,实现Clean接口
public class Office:IClean
{
public void MakeClean()
{
Console.WriteLine("清洁办公室");
}
}
//WorkShop类,实现Clean接口
public class WorkShop:IClean
{
public void MakeClean()
{
Console.WriteLine("清洁工作室");
}
}

//IExtra接口扩展了Clean接口
public interface IExtra : IClean
{
void TakeCare();
}

//Facility设备类实现了IExtra接口,除了清洁还要养护
public class Facility:IExtra
{
public void MakeClean()
{
Console.WriteLine("清洁设备");
}
public void TakeCare()
{
Console.WriteLine("养护照料");
}
}

//客户应用测试
class Client
{
[STAThread]
static void Main(string[] args)
{
IExtra e = new Facility();
e.MakeClean();
e.TakeCare();

IClean c = new Office();
c.MakeClean();

c = new WorkShop();
c.MakeClean();
Console.Read();
}
}


优势和缺陷

  适配器模式可以将一个类的接口和另一个类的接口匹配起来,使用的前提是你不能或不想修改原来的适配器母接口(adaptee)。例如,你向第三方购买了一些类、控件,但是没有源程序,这时,使用适配器模式,你可以统一对象访问接口。但客户调用可能需要变动。

应用情景

  下面的情景很适合应用适配器模式:

  1. 对象需要利用现存的并且接口不兼容的类。

  2. 你需要创建可重用的类以协作其他接口不一定兼容的类。

  3. 你需要使用若干个现存的子类但又不想派生这些子类的每一个接口。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: