rcp adapters 扩展点
org.eclipse.core.runtime.adapters?
该扩展点,可以通过IAdapterFactory ?把 类型转换这块代码 抽取出来,从而达到解除耦合。
?
原始做法:
public ?class Model ? ?implements IAdaptable{
?
? ? ?。。。。。
@Override
public Object getAdapter(Class adapter) {
?if。。return
? ? ? ? ? ? ? ? ?if。。。return
? ? ? ? ? 在这里if else
?
}
}
这样做扩展性不太好。
使用扩展点的方式:
?
public class?Model? ?extends PlatformObject {。。。。}这样就可以了。不用再if elsePlatformObject会从AdapterManager.getDefault().getAdapter(this, adapter);得到需要的类型。在使用之前 需把IAdapterFactory注册到AdapterManager里。可以通过代码的形式,也可以通过扩展点点形式。代码注册:Platform.getAdapterManager().registerAdapters(new AdapterFactory(), User.class);扩展点注册:<extension? ? ? ? ?point="org.eclipse.core.runtime.adapters">? ? ? <factory? ? ? ? ? ? adaptableType="model.User"? ? ? ? ? ? class="adapter.AdapterFactory">? ? ? ? ?<adapter? ? ? ? ? ? ? ?type="adapter.IAddress">? ? ? ? ?</adapter>? ? ? </factory>? ?</extension>扩展点是使用AdapterFactoryProxy 对IAdapterFactory进行了代理/包装。