Java 如何设计一个干净的API接口?

Java 如何设计一个干净的API接口?,java,api,Java,Api,我对需要实现的查询API有一个相当简单的要求 因此,我需要查询一个数据结构,从客户的角度来看,它就像: Select * where idValue=baseball and child.age<10 and child.city=Sydney Select*where idValue=basketball and child.age好吧,你的问题太笼统了,一个实际的答案会占用比SO答案更大的空间。不过,我建议您看看SpringLDAP的文件管理器API,它或多或少满足您的需要。它可能包

我对需要实现的查询API有一个相当简单的要求

因此,我需要查询一个数据结构,从客户的角度来看,它就像:

Select * where idValue=baseball and child.age<10 and child.city=Sydney

Select*where idValue=basketball and child.age好吧,你的问题太笼统了,一个实际的答案会占用比SO答案更大的空间。不过,我建议您看看SpringLDAP的文件管理器API,它或多或少满足您的需要。它可能包含更多您想在这里实现的内容,但只需关注基本思想并从那里开始,因为无论您如何谈论Spring,它都有很好的干净简单的API:


好吧,你的问题太笼统了,一个实际的答案会占用比SO答案更大的空间。不过,我建议您看看SpringLDAP的文件管理器API,它或多或少满足您的需要。它可能包含更多您想在这里实现的内容,但只需关注基本思想并从那里开始,因为无论您如何谈论Spring,它都有很好的干净简单的API:


如果你想要简单的东西,你可以这样做:

List<Child> getChildern(String idValue, String ageConstraint, String city);
List getChildern(字符串idValue、字符串ageConstraint、字符串city);
例如,您必须提到,您在ageConstraint的开头支持“=”、“”字符。您可以在方法中解析它


这在很大程度上取决于谁在使用API来定义应该如何严格或灵活。而且以后更改它是多么容易。这是最简单的一个,不需要太多额外的工作。最好对其进行更严格的限制,以避免出现bug。

如果您想要一些简单的东西,您可以这样做:

List<Child> getChildern(String idValue, String ageConstraint, String city);
List getChildern(字符串idValue、String ageConstraint、String city);
例如,您必须提到,您在ageConstraint的开头支持“=”、“”字符。您可以在方法中解析它


这在很大程度上取决于谁在使用API来定义应该如何严格或灵活。而且以后更改它是多么容易。这是最简单的一个,不需要太多额外的工作。最好是限制性更强,以避免出现bug。

你的问题太笼统了。什么数据结构?最重要的是用例?你的问题太笼统了。什么数据结构?最重要的是用例?但是如果为孩子们添加了两种新的数据类型呢?我也需要解释一下。更新了问题中的内容。@John将List作为参数,然后实现IdConstraint、AgeConstraint和CityConstraint,它们是Constraint的子类。您可以在以后添加更多内容,而无需中断现有实现。这样,您仍然可以控制它们可以做什么(安全考虑)。但是,如果为子级添加了两种新的数据类型,该怎么办?我也需要解释一下。更新了问题中的内容。@John将List作为参数,然后实现IdConstraint、AgeConstraint和CityConstraint,它们是Constraint的子类。您可以在以后添加更多内容,而无需中断现有实现。这样,您仍然可以控制他们可以做什么(安全考虑)。