其设计方案是更好的编码框架使用?
-
20-08-2019 - |
题
我编码了一个框架(在Java中,但问题是,通用)中,我将提供一组接口,为客户实现。在框架的功能要依赖于实现类将如何constructued,即,大公依赖于这些实施方式,以提供的接口的其他实例。
例如我可能有:
Interface IContribution {
public IMyStuff getMyStuff();
public IHelper getHelper();
}
Interface IMyStuff {
public void doSomeMethod(IHelper helper);
}
我怎样才能确保IMyStuff和IHelper这些实例可用?
的一种方法是创建在界面和在我的框架中的“吸气剂”的方法精心检查空物体返回。
另一种选择是创建用于实现一个工厂,调用(使用策略模式)要实现的接口方法的抽象类。但是,这违背了,我在首位的接口的事实。那么客户应该使用抽象类。但是他们可以通过使用接口而不是抽象类规避这一点。因此我不应该提供的接口,但只有抽象类...
那么,什么是你对这个想法,什么是务实的态度呢?
解决方案
我怎样才能确保IMyStuff和IHelper这些实例可用?
如果客户端是负责执行的接口和类本身,我会说这是他们的责任,以确保这些实例可用 - 我不会把它在我自己的代码关心自己
其他提示
为了建立一个良好的框架,您需要同时在周围建造一个应用程序。这样,你就知道和理解的痛苦你的客户会忍受之前,它是对他们蒙骗。
在换句话说,开始:如何将我的客户使用这个应用程序的工作?如何做,他们需要与它合作?
您会立即认识到最简单的方式,从他们的角度来看,将是最好的。
您不能接口确保单打独斗,没有行为存在。
我同意在框架防御式编程的哲学,帮助开发者避免犯错误。
可以提供一个工厂对象:
public class MyPoliceman {
public IContribution makeContributor( IMyStuff stuffer, IHelper helper)
throws BadAssociatesException {
// check validity of stuffer and helper here, throw exceptions if null
}
}
然后至少我们可以检查空值等
随着一些人认为它通常是可能给开发商的帮助。在某些情况下,你能做的最好的就是捕获错误和craefully举报。例如在这里,一个完全正常的IHelper可以传递给你的工厂,但后来的集体诉讼可能使其无法。 (例如图像,这是一个文件,并且副作用后关闭该文件。)然后,所有你能做的就是陷阱所产生的误差条件下,地方记录一个错误,(可能)抛出异常。然后至少在显影剂具有关于什么修复线索。