是一个适配器?请指教

时间:2012-08-21 18:10:08

标签: design-patterns adapter

我有一个类,并且调用另一个类。像:

class Caller
{
    public void LetsCall()
    {
        abstractA a = new ConcreteA();
        a.DoSomething();
    }

}
public abstract class abstractA
{
    public virtual void DoSomething()
    {
    }

}

class ConcreteA : abstractA
{
    public override void DoSomething()
    {
        base.DoSomething();
        Functions.Doit();
    }
}

class Functions
{
    public static void Doit()
    {
        //Some more work
    }
}

喜欢了解" ConcreteA" class是一个适配器,Function类是一个适配器吗?

任何人都可以解释适配器的特性。除了在适配器中调用方法的方法之外,还可以使用其他方法 谢谢,

1 个答案:

答案 0 :(得分:0)

这看起来像多态和组合。适配器的概念是一个“包装器”,它分派给一些底层对象。拥有适配器的目的是允许现有代码符合特定接口。

我总是看到一个例子,就是说我有一个我写的形状库,我有以下界面。

 public interface Shape {
    double getArea();
 }

现在我在另一个库中找到了一些很酷的Circle实现,我想在我的系统中使用它,但是没有getArea()方法。这是:

public class SomeonesCircle {
   public double getRadius() { return radius; }
}

因此,对于我来说,在我的系统中将其设为“形状”,我​​可以引入一个适配器:

public class CircleAdapter implements Shape {

   private final SomeonesCircle theCircle;

   public CircleAdapter (SomeonesCircle theCircle) { this.theCircle = theCircle; }

   public double getArea() {
     return theCircle.getRadius() * theCircle.getRadius() * Math.PI;
   }
}

// Somewhere else I can now do
Shape shape = new CircleAdapter(new SomeonesCircle(radius));

所以现在我可以将现有代码用作Shape - 也就是说,我对它进行了调整。我在你的示例代码中没有看到同样的想法。也许,如果你使用实际的具体想法,它会更清楚。