gpt4 book ai didi

gwt - 消除 GWT ActivityMapper 样板

转载 作者:行者123 更新时间:2023-12-03 23:54:33 26 4
gpt4 key购买 nike

我正在使用 GWT 事件和地点框架来构建我的应用程序,结果很好。让我烦恼的一件事是 ActivityMapper实现是 (1) 接收应用程序中的所有 View (2) 包含一个巨大的 if/else block ,用于根据接收到的位置实例化事件。随着观看次数的增加,情况只会变得更糟。

ActivityMapper screenshot

我已经在使用 Gin但我不知道如何在这里使用它。

如何减少或消除我的 ActivityMapper 中的样板?

最佳答案

还没有很好的答案。我心中有代码生成方案,但目前这一切都在白板上乱涂乱画。对于 Gin 用户来说,Place Scope 似乎很方便。

回复:if/else 级联,一种常见的方法是让您的 Place 对象实现访问者模式。例如。假设您已为您的事件设置了 AssistedInject(请原谅草率的现场注入(inject),这只是一个草图)。

class BasePlace extends Place {
<T> T acceptFilter(PlaceFilter filter);
}

interface PlaceFilter<T> {
T filter(FooPlace place);
T filter(BarPlace place);
T filter(BazPlace place);
}

public class MainActivities implements ActivityMapper {
@Inject FooFactory fooMaker;
@Inject BarFactory barMaker;
@Inject BazFactory bazMaker;

public Activity getActivity(PlaceChangeEvent e) {
return ((BasePlace)e.getPlace()).acceptFilter(
new PlaceFilter<Activity>() {
Activity filter(FooPlace place) {
return fooMaker.create(place);
}
Activity filter(BarPlace place) {
return barMaker.create(place);
}
Activity filter(BazPlace place) {
return bazMaker.create(place);
}
})
}
}

关于gwt - 消除 GWT ActivityMapper 样板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5802747/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com