GoF的Adapter解决了将一种接口适配为另一种接口的方法,例如:
将实现了接口A的AImpl适配为接口B,就需要从AImpl继承,同时实现B接口:
class BImpl extends AImpl implements B { ... }
但是在Eclipse中要将一个Object适配为另外的接口,很可能有很多个,并且在将来还可能需要增加新的接口,而客户端需要动态将该Object适配为自己想要的类型
例如,自己的一个对象MyObject需要适配为IFile对象,如果直接使用Adapter接口,就需要实现IFile接口,这是非常困难的,因此 Eclipse设计了一种Adapter机制,通过实现IAdaptable接口,就能动态查询一个Object是否支持某个接口,如果支持,就将其转化为该接口的对象
例子:
我们自己设计的MyObject包含一个IFile引用:
class MyObject {
private IFile file;
}
若要将MyObject动态转化为IFile,就需要实现IAdaptable接口:
class MyObject impl ...