我真的建议您在开始设计 API 之前在纸上记录以下内容。
准备工作
您是否确定了所有类型的交互实体。每个实体都可以组成一个对象。
您希望在哪个层(控制器/外观/DAO 等)使用这些。
是预期通过网络传输的任何对象。
您的整个 API 将公开哪些数据。
设计
您通常需要执行以下操作:-
如果您的实体(在第 1 部分中)是相关的并且可能包含公共信息,请创建 1 个实体(示例 Common)以保留公共数据(如请求的时间戳、设备信息等)并创建其他可以包含此信息的实体,继承这个实体。确保公共实体的属性受到保护。
Common 看起来像
public class Common{
protected _deviceId;
protected _reqTimeStamp;
protected _osVersion;
//Getters and Setters.
}
例如,如果您的 API 使用从移动应用接收的 JSON 请求数据,您可以让 Common 包含上面第 1 点中给出的数据。您可以创建另一个 Object,如下所示
public class UserInfo extends Common{
private String _userName;
private String _userMailId;
//getters and setters
}
尝试为层之间的数据传输保留最少的实体。如果您的 API 服务的服务层位于不同的服务器上,那么您可能希望使其保持可序列化并确保此类 DTO 不包含大量信息。
同样,当您分离 API 的功能时,请尝试查看哪些功能相似且通常需要。将它们移到抽象类中,并使对其他行为进行分类的接口实现扩展抽象类。
请参阅下面的示例。
public abstract class CommonBehaviour {
protected String _commonId;
public void commonBehaviourOne()
{
//Behaviour common to implementations
}
abstract public void overrideThisBehaviour();
//getters and setters
}
现在,如果您在实现中有两种类型的行为,它们之间具有共同的功能。
public interface Designable {
}
public class DesignerImpl extends CommonBehaviour implements Designable {
@Override
public void overrideThisBehaviour() {
// TODO Auto-generated method stub
}
}
一旦明确了先决条件,就可以轻松地决定将课程设为公开、私有还是默认。你必须集思广益,在利益相关者之间进行讨论,然后再次集思广益。你一定会想出一个好的 API
参考资料供您参考
互联网上有大量信息可供进入设计领域的人使用。
就书籍而言,我提到了“Head First Design Patterns”和Design Patterns by Gamma。虽然我发现 Gamma 更全面,但前者对新手有好处。
如果这对您有帮助,请告诉我。