【发布时间】:2015-01-17 02:19:00
【问题描述】:
我正在创建一个检查函数列表的 API。有一个对象作为要检查的参数传入。
对象如下:
public class People{
private String name;
private String address;
private int age;
private String job;
public getter() ...
public setter() ...
}
我创建了一个包含检查功能列表的类,以确保提供的信息有效与否。例如:
public class checkingFunctions {
public static boolean checkName(People ppl){
perform the name checking function;
}
public static boolean checkAge(People ppl){
perform the age checking function;
}
}
我知道上述方式作为 API 工作,以便其他人可以调用 checksFunctions.checkName(ppl)。但这是构建将作为 jar 文件公开给其他人的 API 的正确方法吗?我正在考虑创建一个如下的检查函数接口:
public interface ICheckingFunctions {
boolean checkName(People);
boolean checkAge(People);
}
并让checkingFunctions类来实现它,就像
public class checkingFunctions implements ICheckingFunctions {
}
但它不会编译,因为如果 checkName 和 checkAge 覆盖超类方法,则不能将其声明为静态。
或者我应该只使用接口并让它实现接口,但从所有检查方法中删除静态。那么,如果其他人想使用我的 API,他们只需实例化接口,并使用 instance.checkName() 调用方法?这是一个好方法吗?
我想知道是否存在行业标准或设计模式标准来创建这样的接口,以便其他人可以调用它。
非常感谢。
【问题讨论】:
-
@Devs 不是真的,这个问题是关于如何将代码打包为 API,这个问题更多的是关于一个好的 API 是什么样的。
-
setName()方法可以检查名称,也可以将checkName()方法添加到 People 类中。会有帮助吗? -
谢谢,或者我应该只使用接口并让它实现接口,但从所有检查方法中删除静态。那么,如果其他人想使用我的 API,他们只需实例化接口,并使用 instance.checkName() 调用方法?这是个好方法吗?
-
对象本身不应该自我验证吗?这就是 OO 的意义所在。过程语言将具有验证其他“结构”的功能,但 OO 语言应该专注于自包含的工作单元 - 恕我直言。并不是说您不会拥有不会进行额外检查的业务逻辑
标签: java api interface static-methods