特若网络 GWT GWT延迟绑定介绍

GWT延迟绑定介绍

GWT的延迟绑定是一种GWT对反射机制的一种支持方案。简单的说就是在使用GWT进行代码开发的时候,可以使用接口…

GWT的延迟绑定是一种GWT对反射机制的一种支持方案。简单的说就是在使用GWT进行代码开发的时候,可以使用接口和抽象类,而不用管它的实现,在编译后或者host模式的情况下,GWT会自己跟模块配置的信息来使用具体哪一个实现类替代代码中的接口和抽象类。

使用说明:

1. 定义接口或者抽象类,然后再定义一个实现类。

2. 在xxx.gwt.xml(模块文件中定义)替换的参数信息和具体替换的类

<replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla">
    <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
    <when-property-is name="user.agent" value="gecko1_8"/>
</replace-with>  

上面的配置是将在firefox浏览器里面使用DOMImpl该类的地方使用DOMImplMozilla这个类进行替换。其中的replace-with是指实际用到的类,when-type-is则是要替换的类,when-property-is则是一些参数信息,可以添加0到多个。另外,关于参数的配置还可以加一些逻辑的限制,如Any,

<any>
    <when-property-is name="user.agent" value="gecko"/>
    <when-property-is name="user.agent" value="gecko1_8" />
</any>  

3. 在代码中使用
通过GWT.create方法可以动态的获取不同的实现类,如下:
DOMImpl impl = (DOMImpl) GWT.create(DOMImpl.class);

再结合gwt的dom模块的配置信息(如下),impl对象将会根据不同的浏览器而动态采用不同的domimpl类的实现。

<module>
    <inherits name="com.google.gwt.core.Core"/>
    <inherits name="com.google.gwt.user.UserAgent"/>
    <replace-with class="com.google.gwt.user.client.impl.DOMImplOpera">
        <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
        <when-property-is name="user.agent" value="opera"/>
    </replace-with>
    <replace-with class="com.google.gwt.user.client.impl.DOMImplSafari">
        <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
        <when-property-is name="user.agent" value="safari"/>
    </replace-with>
    <replace-with class="com.google.gwt.user.client.impl.DOMImplIE6">
        <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
        <when-property-is name="user.agent" value="ie6"/>
    </replace-with>
    <replace-with class="com.google.gwt.user.client.impl.DOMImplMozilla">
        <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
        <when-property-is name="user.agent" value="gecko1_8"/>
    </replace-with>
    <replace-with class="com.google.gwt.user.client.impl.DOMImplMozillaOld">
        <when-type-is class="com.google.gwt.user.client.impl.DOMImpl"/>
        <when-property-is name="user.agent" value="gecko"/>
    </replace-with>
</module>  
本文原创,禁止转载。https://www.gjxblog.com/2020/03/19/401/

作者: GJX

联系我们

联系我们

邮箱: gjx.xin@qq.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部