我在我的应用程序中使用GWT。对于缓存图片我使用ClientBundle和ImageResource。我有很多像这样的ClientBundles:
public interface MenuBundle extends ClientBundle {
@Source(background.png)
ImageResource background();
@Source(image_bg.png)
ImageResource image_bg();
...
}
和数百个ClientBundles使用相同的方法:
public interface House1 extends House, ClientBundle {
@Source(house1/pic1.png)
ImageResource pic1();
@Source(house1/pic2.png)
ImageResource pic2();
@Source(house1/pic3.png)
ImageResource pic3();
...
}
public interface House2 extends House, ClientBundle{
@Source(house2/pic1.png)
ImageResource pic1();
@Source(house2/pic2.png)
ImageResource pic2();
@Source(house2/pic3.png)
ImageResource pic3();
...
}
public interface House {
ImageResource pic1();
ImageResource pic2();
ImageResource pic3();
...
}
结果我在服务器上有数百张图片,如“* .cache.png”。 为了快速加载,我需要更少的图片。为此我找到了决定:
public class ClientBundleModule extends AbstractGinModule {
@Override
protected void configure() {
bind(MenuBundle.class).to(ClientBundlePack1.class);
bind(NatureFuture.class).to(ClientBundlePack1.class);
...
bind(House1.class).to(ClientBundlePack2.class);
bind(House2.class).to(ClientBundlePack2.class);
bind(House3.class).to(ClientBundlePack2.class);
...
}
}
public interface ClientBundlePack1 extends MenuBundle, NatureFuture, ... {
}
public interface ClientBundlePack2 extends House1, House2, House3, ... {
}
还有Ginjector,......但问题是:
MenuBundle,NatureFuture和ClientBundlePack1中的其他类编译成一个大图(很好),但是House1,House2,House3和其他House不能编译成一幅大图(这很糟糕)。
众议院在一张照片中编辑每个班级的房子。我在java方式中看到了扩展实现的问题,使用像pic1这样的相同方法而不是使用所有方法pic1。
但我需要在一张照片中加入所有的房子。有GIN的设置,注释来做到这一点。或者可能有其他方式加入所有房屋?但是我不能重写House的代码,它会打破我的应用程序的架构。预加载后我立即需要所有房屋,没有“延迟加载”。
感谢。