Java基于策略的设计

3
我有一个while循环,用户应该能够决定何时停止循环。经过x秒后,经过x次循环后,...这个问题应该按照策略设计来实现。我知道如何在C++中做到这一点,但无法在Java中实现。
我现在所做的是以下内容。
有一个类Auctioneer,其中应适用策略的方法为“start()”: public void start(E policy) { //在此处使用策略}
因为AbstractEndAuctionPolicy有方法“endAuction()”,我们可以执行:policy.endAuction()。在C++中不需要“extends AbstractEndAuctionPolicy”...
但我无法弄清楚如何使用此方法,以下内容不起作用:
this.auctioneer.start(n);
希望你们能帮助我,并告诉我一些关于Java中策略设计的信息,因为Google没有给我答案。
提前感谢。
1个回答

1
通常编译器能够从参数类型中推断出泛型类型,即简单地
this.auctioneer.start(n);

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

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

由于Java泛型比C++模板弱得多,我甚至很少听到在Java领域中使用“策略”这个术语。然而,你的方法似乎是一个很好的近似。


好的,我明白了,在类定义中,NewBidPolicy必须扩展AbstractEndAuctionPolicy。但现在我不再看到泛型的优势了。这只是继承吗? - Niel
1
@mrdckx,你说得对,这是Java泛型比C++模板更受限制的方式之一。也就是说,你必须指定一个超级接口才能在泛型参数对象上调用特定的方法。所以你确实有一个好观点,在这种情况下,你实际上可以完全放弃泛型,只需将AbstractEndAuctionPolicy参数传递给start()即可。 - Péter Török
好的!谢谢你的快速回复。 - Niel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接