Oop 只暴露我课堂的一部分

Oop 只暴露我课堂的一部分,oop,design-patterns,Oop,Design Patterns,假设我有一个具有多个属性的类用户。我正在构建一个基于REST的应用程序,所以在我的主页中,当我请求“用户详细信息”时,我只需要我的用户的一些属性和其他类的REST。如何为返回“用户详细信息”的对象编写类 我当前的设计从类中检索构建JSON所需的属性。我希望有更好的方法来处理这个问题 我将PlayFramework2.0与Java一起使用如果您不想公开整个业务类用户,我将构建第二个类,一个DTO。此类仅提供要由RESTAPI传输的所需数据 User user = new User("admin")

假设我有一个具有多个属性的类用户。我正在构建一个基于REST的应用程序,所以在我的主页中,当我请求“用户详细信息”时,我只需要我的用户的一些属性和其他类的REST。如何为返回“用户详细信息”的对象编写类

我当前的设计从类中检索构建JSON所需的属性。我希望有更好的方法来处理这个问题


我将PlayFramework2.0与Java一起使用

如果您不想公开整个业务类用户,我将构建第二个类,一个DTO。此类仅提供要由RESTAPI传输的所需数据

User user = new User("admin");
// Set other properties
UserDetailsDTO userDetailsDTO = new UserDetails(user); //<- Transfer userDetailsDTO
User User=新用户(“管理员”);
//设置其他属性

UserDetailsDTO UserDetailsDTO=新的UserDetails(用户)// 看起来你需要一个门面:。 它是一个简单的模式,可以帮助您从多个类中公开方法/属性。
您可以在Facade类中存储对对象的引用,并仅公开您需要的内容

可以选择创建视图模型对象,为JSON所需的信息提供适当的抽象。 更多详情请点击此处:


但这通常用于在应用程序视图中直接使用视图的情况。因此,在上面提到的用例中需要仔细分析,因为已经创建了JSON,所以创建此视图模型层是非常合理的。

您使用哪种编程语言/框架?请注意,我要返回的对象可能也包含其他类的属性。例如,来自用户和课程类的混合属性。然后,我将使用First aproach,这是一个特定的类,包含需要通过API传输的数据
public class User {
    Long id;
    String name;
    String address;
    UserDetails userDetails; // Composition <- Tranfer userDetails
}