2011-02-09 21 views
3

最近在answer有人建议,我认为这:在一个通用界面中是否有益处?

public interface Operation<R extends OperationResult, P extends OperationParam> { 

    public R execute(P param); 
} 

比这更好:

public interface Operation { 

    public OperationResult execute(OperationParam param); 
} 

我却无法看到使用的第一个代码块在第二任何好处一个...

鉴于OperationResultOperationParam都是接口,实现者无论如何都需要返回派生类,这对我来说似乎很明显。

那么你看到任何理由使用第一个代码块的第二个吗?

+1

你确定你的意思是'gentrified'而不是'generified'吗? – 2011-02-09 10:41:13

+4

“gentrified”界面?这是一个流行的时尚,艺术气质的Ruby人群,只有随后经历高档界面开发人员的豪华装修,直到Joe开源开发人员再也买不起它了吗? – 2011-02-09 10:42:10

回答

6

通过这种方式,您可以声明Operation实现以返回更具体的结果,例如,

class SumOperation implements Operation<SumResult, SumParam> 

虽然这是否对您的应用有任何价值,但完全取决于情况。

更新:当然,您可以返回一个更具体的结果,而不需要通用接口,但是这样您也可以限制输入参数。

相关问题