在一个项目中,我看到了一些由前雇员编写的代码。该人已将其命名为适配器模式的实现,但我不确定。这是代码:
public class RowSetAdaptor implements java.io.Serializable {
private javax.sql.rowset.CachedRowSet cachedRowSet;
public RowSetAdaptor() throw SQLException {
cachedRowSet = new com.sun.rowset.CachedRowSetImpl();
}
public void populate(ResultSet resultSet) throw SQLException {
cachedRowSet.populate(resultSet);
}
public boolean next() throw SQLException {
cachedRowSet.next();
}
.... // different methods all using cachedRowSet
}
我看到它的方式RowSetAdaptor
是限制对CachedRowSet
接口的访问,因为并非所有CachedRowSet
接口方法都在RowSetAdaptor
类中可用。它真的是适配器模式吗?如果不是,那么这里使用的是哪种设计模式?
更新 [2015 年 2 月 24 日]
感谢@JB Nizet、@Fuhrmanator、@Günther Franke、@vikingsteve 和@Giovanni Botta 的回答。
如果我进行以下修改以使其成为适配器模式怎么办?
public interface RowSetI {
public boolean next() throws SQLException;
...
}
public class CachedRowSetAdapter implements RowSetI {
private javax.sql.rowset.CachedRowSet cachedRowSet;
public CachedRowSetAdapter() throw SQLException {
cachedRowSet = new com.sun.rowset.CachedRowSetImpl();
}
public void populate(ResultSet resultSet) throw SQLException {
cachedRowSet.populate(resultSet);
}
public boolean next() throw SQLException {
cachedRowSet.next();
}
...
}
public class JdbcRowSetAdapter implements RowSetI {
private javax.sql.rowset.JdbcRowSet jdbcRowSet;
public JdbcRowSetAdapter() throw SQLException {
jdbcRowSet = new com.sun.rowset.JdbcRowSetImpl();
}
public void populate(ResultSet resultSet) throw SQLException {
jdbcRowSet.populate(resultSet);
}
public boolean next() throw SQLException {
jdbcRowSet.next();
}
...
}
TIA