哪种设计API更好:
Example A:
public class UserService {
public void addUser(final User user);
public void addUserToIndex(final User user, final int index);
public User lookUpUser(final User user);
public User getUserByIndex(final int index );
public void removeUser(final User user);
public List<User> getAllUsers();
}
Example B:
public class UserService {
public void add(final User user);
public void add(final User user, final int index);
public User lookUp(final User user);
public User get(final int index);
public void remove(final User user);
public List<User> getAll();
}
Run Code Online (Sandbox Code Playgroud)
显然这段代码不会运行 - 它应该只显示问题.我更喜欢第二种方法.方法名称可能有点通用,但上下文(className,parameter,return Type)使它非常清楚.第二种方法可能存在的一个问题是,如果我需要另一个具有相同类型的get方法会发生什么.例如,如果我想按年龄获得用户.在此先感谢您的帮助.
裤裤
您需要回答两个主要问题以使您的选择更加容易:
您是否绝对 100% 确定您永远不会与多个实体达成这项服务协议?
换句话说,是否存在这样的场景:UserService会有额外的方法,例如getRoles()?如果答案是肯定的,那么您肯定会选择选项 A。
如果您肯定要为每个服务拥有一个实体,那么您是否需要每个服务的接口,还是更愿意使用通用的通用接口?
所以,你可以用类似的东西来代替你的选项B
public class Service<T> {
public void add(final T entity);
public void add(final T entity, final int index);
public T lookUp(final T entity);
public T get(final int index);
public void remove(final T entity);
public List<T> getAll();
}
Run Code Online (Sandbox Code Playgroud)
需要更具体功能的具体服务可以扩展此通用服务。
| 归档时间: |
|
| 查看次数: |
1165 次 |
| 最近记录: |