【发布时间】:2012-01-20 13:41:28
【问题描述】:
我需要为应用程序创建一个 API(比如说库管理器)。像许多典型应用程序一样,它是在 ORM 工具之上制作的,该工具使 POJO 持久化到 dbms 中。 现在我必须制作 API,以便其他开发人员可以将其用作 JAR。可以说,我们希望用户将书籍添加到图书馆。 我对设计它的最佳方式有很多疑问。
1) 为 POJO 提供类似 DAO 的类是个好主意吗:
BookManager {
create(...)
delete(Book book);
List<Book> getAll();
...
}
2) 暴露对象:
a) 我应该将实际的应用程序 POJO 暴露给 API 层吗? 这些有一些可能不想公开的应用程序逻辑和一些我想公开的逻辑。例如,我想公开 book.getPages() 但不公开 book.deletePage(int pageNo)
b) 专门为 API 层创建重复对象。只会暴露接口。
c) 根本不暴露对象。 API 使用参数。例如
BookManager {
create(String name, int price);
delete(String name);
List<Pair<String, Integer>> getAll();
...
}
这意味着与系统的单点访问。如果要对 POJO 执行某些操作,将从 BookManager 调用它。例如,ClockManager.start(String clockName)。它还提供了灵活性,例如在 ClockManager 中拥有 startAll() 等方法。
3) 最后,BookManager 应该包含 update() 方法,还是应该存在于 Book 本身中?更新意味着将配置保存到数据库中。什么更有意义:
Book book = bookManager.create("API Design");
book.setPrice();
book.update();
或者,
Book book = bookManager.create("API Design");
book.setPrice();
bookManager.update(book);
提前致谢,
阿曼
【问题讨论】: