【发布时间】:2014-09-17 03:23:15
【问题描述】:
我正在定义一个接口来分组两个不同的子类。每个类都实现了继承方法,但每个类都需要不同的参数才能工作。
这是界面。
public interface Billable()
{
decimal Bill();
}
这是第一堂课
public class HourlyEmployee : Billable
{
public decimal Bill(int hoursWorked, decimal pricePerHour) { }
}
这是第二个
public class CommissionEmployee : Billable
{
public decimal Bill(decimal commisionPercentage) { }
}
如您所见,从概念上讲,他们使用方法来实现相同的目的,即对服务收费。这就是我最初考虑继承的原因,但似乎这不是最好的方法。
还有哪些其他选择可以使类相互关联?
【问题讨论】:
-
将方法的签名定义为public decimal Bill(int base, decimal rate)。这种将广泛量作为不同广泛量乘以密集量的乘积的模式是常见的位置模式。
-
我不认为尝试在接口方法签名中包含所有必需的参数是一个好主意,这会使接口变得脆弱。