我是Java的新手,我想知道哪种解决方案更正确,为什么。
我有这两个接口:
interface Account
{
public double getBalance();
}
interface Taxable
{
public double calculateTaxes();
}
我需要一个实现这两个接口的类。
对我来说,这个解决方案更直观:
class TaxableAccount implements Account, Taxable
{
@Override
public double calculateTaxes()
{
return 10; //just for example
}
@Override
public double getBalance()
{
return 20;
}
}
但我读了一本有这个解决方案的书:
interface TaxableAccount extends Account, Taxable
{
}
class AccountWithTaxes implements TaxableAccount
{
@Override
public double calculateTaxes()
{
return 10;
}
@Override
public double getBalance()
{
return 20;
}
}
感谢。
答案 0 :(得分:3)
TaxableAccount接口将毫无意义,除非您打算向其添加内容 - 比如说至少有一个额外的方法。一个空的界面是一个代码气味'应该删除,留下你完美的第一个例子。
另一个线索是这是一种“气味”。是你在第二个例子中为这个班级提供一个好的,简单的名字时遇到了麻烦 - 大多数情况下,命名应该是明显的,不言自明的,就像在第一个例子中一样。