博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

设计模式——适配器模式(Adapter patterns)

Posted on 2008-08-25 12:17  Anna Yang  阅读(303)  评论(0编辑  收藏  举报
设计模式(7):适配器模式(Adapter patterns)
 
适配器模式(Adapter patterns)  
 
定义       
     将一个类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
 
 概述 
      在软件开发中,系统地数据和行为都正确,但接口不符实,我们应该考虑用适配器,目的是使控制范围以外的一个原有对象与某个接口匹配
      适配器主要应用于希望复用一些现存的类,但是接口又与复用环境要求不一致的情况。
    
   
      适配器分为类适配器模式和对象适配器
      类适配器模式:通过多继承对一个接口与另一个接口进行匹配,而C#,vb.net,java等语言不支持多重继承。也就是一个类只有一个父类。
      我们在此用的是对象适配器
  
适配器模式(Adapter patterns)结构图

 

相应的代码:
class Target  
{
    
public virtual void Request()
    {
        Console.WriteLine(
"普通请求!");
    }
}

class Adaptee
{
    
public void SpecificRequest()
    {
        Console.WriteLine(
"特殊要求! ");
    }
}

class Adapter : Target
{
    
private Adaptee adaptee=new Adaptee();//建立一个私有的Adaptee对象
    public override void Request()
    {        
        adaptee.SpecificRequest();
//这样可以把表面上调用Request()方法变成实际调用SpecificRequest()
    }
}


客户端代码:
static void Main(string[] args)
{
    Target target
=new Adapter();
    target.Request();
//对客户端来说,调用的就是Target的Request()
}
 
对适配器模式具体的解释以球星为例:(见图,代码可仿照上面的写)
适配器模式的使用性:
 想使用一个已经存在的类,但它的接口,也就是它的方法和你的要求不同时,就应该考虑使用设计模式。两个类所做的事情相同或相似,但是具有不同的接口时要使用它。而且由于类都共享同一个接口,使得客户代码可以同一调用同一接口就行了。