3

我有一个while循环,用户应该能够决定循环何时停止。x 秒后,x 次循环后,…… 这个问题应该按照基于策略的设计来实现。我知道如何在 C++ 中做到这一点,但不能让它在 Java 中工作。

我现在要做的是以下。

有一个 Auctioneer 类,其方法是“start()”,其中的策略应该适用:

public <E extends AbstractEndAuctionPolicy> void start(E policy) { //use policy here }

因为 AbstractEndAuctionPolicy 有方法“endAuction()”,我们可以做:policy.endAuction()。在 C++ 中,不需要“扩展 AbstractEndAuctionPolicy”...

但我不知道如何使用这种方法,以下不起作用:

this.auctioneer.start<NewBidPolicy>(n);

希望你们能帮助我并告诉我一些关于 Java 中基于策略的设计的信息,因为谷歌没有给我答案。

提前致谢。

4

1 回答 1

1

通常编译器能够从参数类型中找出泛型类型,即简单地

this.auctioneer.start(n);

可能有效(很难确定,因为您提供的上下文很少)。但是如果这不满足编译器,请尝试

this.auctioneer.<NewBidPolicy>start(n);

由于 Java 泛型远没有 C++ 模板强大,因此我什至没有听说过在 Java 领域中大量使用“策略”一词。但是,您的方法似乎是一个很好的近似值。

于 2010-09-04T11:55:55.717 回答