基于Java策略的设计

时间:2010-09-04 11:49:15

标签: java policy policy-based-design

我有一个while循环,用户应该能够决定循环何时停止。 x秒后,x循环后,......这个问题应该根据基于策略的设计来实现。我知道如何在C ++中执行此操作,但无法在Java中使用它。

我现在做的是以下内容。

有一个类Auctioneer,其方法为“start()”,其中政策应适用:

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

因为AbstractEndAuctionPolicy具有方法“endAuction()”,所以我们能够:policy.endAuction()。在C ++中,不需要“extends AbstractEndAuctionPolicy”......

但是我无法弄清楚如何使用这种方法,以下是行不通的:

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

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

this.auctioneer.start(n);

可能有用(很难说清楚,因为你提供的上下文很少)。但如果这不满足编译器,请尝试

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

由于Java泛型的功能远不如C ++模板,因此我甚至都没有听说过Java领域中使用的术语“策略”。但是,你的方法似乎是一个很好的近似。