我正在编写一个框架(在 Java 中,但问题是通用的),我将在其中提供一组接口供客户端实现。框架中的功能将依赖于如何构造实现类,也就是说,它们依赖于这些实现来提供其他接口实例。
例如我可能有:
Interface IContribution {
public IMyStuff getMyStuff();
public IHelper getHelper();
}
Interface IMyStuff {
public void doSomeMethod(IHelper helper);
}
如何确保 IMyStuff 和 IHelper 的这些实例可用?
一种方法是在接口中创建“getter”方法,并在我的框架中煞费苦心地检查返回的空对象。
另一种选择是创建实现工厂的抽象类,该工厂调用(使用策略模式)要实现的接口方法。但这违背了我首先拥有界面的事实。然后客户端应该使用抽象类。但是他们可以通过使用接口而不是抽象类来规避这一点。因此我不应该提供接口而只提供抽象类......
那么,您对此有何想法,对此采取务实的方法是什么?