假设我有一个具有多个属性的类用户。我正在构建一个基于REST的应用程序,所以在我的主页上,当我请求“用户详细信息”时,我只需要用户的一些属性和其他类的其他属性。我如何编写我将为“用户详细信息”返回的对象的类?
我当前的设计从类中检索所需的属性以构建JSON。我希望有更好的方法来解决这个问题。
我使用Play Framework 2.0 with Java
答案 0 :(得分:0)
如果您不想公开整个业务类User,我将构建第二个类,即DTO。此类仅提供REST API要传输的所需数据。
User user = new User("admin");
// Set other properties
UserDetailsDTO userDetailsDTO = new UserDetails(user); //<- Transfer userDetailsDTO
或者,如果“用户详细信息”对您的应用程序很重要,也许您应该考虑创建一个UserDetails类,并通过组合在User类中使用它。
public class User {
Long id;
String name;
String address;
UserDetails userDetails; // Composition <- Tranfer userDetails
}
注意:在Java中使用的示例
答案 1 :(得分:0)
看起来你需要一个Facade:http://en.wikipedia.org/wiki/Facade_pattern。 它是一个简单的模式,可以帮助您从多个类中公开方法/属性。 您可以存储Facade类中对象的引用,并仅公开您需要的内容。
答案 2 :(得分:0)
可以选择创建View Model对象,为该JSON所需的信息提供适当的抽象。 有关它的更多详细信息,请访问:http://en.wikipedia.org/wiki/Model_View_ViewModel
但这通常用于视图直接在应用程序的视图中使用的情况。因此,在上面提到的用例中需要仔细分析,因为已经创建了JSON,这个View Model层的创建确实是合理的。