我发现自己希望一个接口可以由在几个类中实现的方法组成。如果我能做到这一点,我可以为一个角色创建一个接口,该角色具有该类中的一个函数和该类中的一个函数。两个类之间的接口拆分
任何语言对此支持吗?典型的Java/C#/ VB.NET风格的OO有可能吗?
例如:我有一个函数,它接受一个值对象,并将所有零件保存到正确的表中。我只是创建了一个名为StatsPersistence
的接口,我将其注入到函数中,以便我可以对其行为进行单元测试,但它缺少一种方法。我想能够添加一个方法,但该方法与前两个不同的类,所以这显然是不可能的。所以,我在一个类中有两个方法,另一个在另一个类中,但它们都是“StatsPersistence”的“角色”所需的。而且,这些方法也是其他角色所需要的三种方法,而不仅仅是这一方面。
我有什么:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
我想要什么:
interface StatsPersistence
public saveSession(session) // fulfilled in much larger StatsActiveRecord
public saveAppUse(appUse) // fulfilled in much larger StatsActiveRecord
public updateUnit(name) // fulfilled in much larger UnitActiveRecord
我可以只是使包装所有三种方法一个新的类,并有该类刚刚作出的呼吁两个实现者,但这看起来就像很多OOverkill一样。
我的想法是倾向于:
- 我的界面作用过于宽泛
- 作出这样的包装这三个类,并让它实现我想要的界面
可能是门面模式? – 2012-03-30 00:45:11
“接口是类必须满足的合同”而不是“类是接口必须应用的合同”。 – Dhananjay 2012-03-30 10:58:09
@Dhananjay我知道,我只是希望可能有一个“未知的未知”潜藏在我对界面和类的理解之外,以及它们如何构成。也许一些新特性的使用,或者我不知道的函数式编程技术。 – Steve 2012-04-02 14:15:06