0

我有一个关于适配器模式的查询,如何在这种情况下实现。我有一个返回类型是单个对象的接口。

public interface MyInt {
MyObj read();
}

但是,我的适配器实现类说,MyAdaptee 具有返回 MyObj 对象列表的方法。

public class MyAdaptee {
public MyObj[] readTheInput() {
// implementation here
}

现在,我如何在 MyAdaptee 之上编写适配器?由于我无法更改接口,如何将 MyObj 的多个对象发送到期望单个对象的客户端?

PS:MyObj也是接口。

4

1 回答 1

0

您需要使用其语义来实现 Adapter,因此,可能必须修改 Adaptee 实现,以便通过跟踪之前返回的内容来一一返回数组项。

下面是指示性实现,我没有编译和测试过,所以把它作为它所代表的逻辑。

public class MyAdaptee implements MyInt {
     private MyObj[] buffer = new MyObj[0];
     private indexOfLastBufferedItemReturned = 0;

  @Override
  public MyObj read() {
     if (indexOfLastBufferedItemReturned >= buffer.length) {
        buffer = readTheInput(); //use existing implementation here
        indexOfLastBufferedItemReturned = 0;
     }
     return buffer[indexOfLastBufferedItemReturned++];   
  }

  public MyObj[] readTheInput() {    
     // implementation here   
  }   

}

于 2013-07-07T03:47:01.210 回答