Как создать объект Java, который содержит выбранные свойства? - PullRequest
2 голосов
/ 13 октября 2019

Рассмотрим следующий класс.

public class UserDTO {


 private String email;
        private String password;
        private String country;
        private String fName;
        private String lName;
        private String type;
        private String profPicPath;

    public UserDTO(String fNme, String lNme, String profPic) {
        this.setfName(fNme);
        this.setlName(lNme);
        this.setProfPicPath(profPic);
    }

    public String getEmail() {
        return email;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getfName() {
        return fName;
    }

    public void setfName(String fName) {
        this.fName = fName;
    }

    public String getlName() {
        return lName;
    }

    public void setlName(String lName) {
        this.lName = lName;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public void setEmail(String email) {
       this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getProfPicPath() {
        return profPicPath;
    }

    public void setProfPicPath(String profPicPath) {
       this.profPicPath = profPicPath;
    }

Я хочу создать объект, содержащий только fName, Lname и profPicPath. Я создал конструктор для инициализации только этих трех полей. Но когда я создаю объект, используя этот конструктор, он содержит и другие свойства с нулевыми значениями. Есть ли какой-либо подход в Java для создания объекта только с выбранными свойствами?

Ответы [ 2 ]

1 голос
/ 13 октября 2019

Я думаю, вы запутались между объектом домена / модели и объектом DTO. Класс домена / модели представляет полный набор атрибутов, в то время как вы определяете DTO, представляющие подмножества атрибутов в классе домена / модели, например, класс User - это класс вашего домена / модели, представляющий полный набор атрибутов (электронная почта, пароль, страна,fName, lName, тип, пол, страна, profPicPath и т. д.), а затем вы можете иметь DTO, такие как UserLoginCredentialDTO (с атрибутами электронной почты и пароля), UserDemographyDTO (с такими атрибутами, как пол, страна и т. д.).

Вы также можете проверить https://softwareengineering.stackexchange.com/questions/155768/what-oo-design-to-use-is-there-a-design-pattern для другого примера.

Кроме этого, комментарии JB Nizet и Abra вполне допустимы ипоможет вам лучше понять эту концепцию с точки зрения Java.

0 голосов
/ 13 октября 2019

да. подход называется наследование . Вам необходимо создать BaseUserDTO, который содержит подмножество свойств, которые совместно используются двумя сущностями(они должны быть объявлены как protected, чтобы быть доступными для подкласса) UserDTO расширит базовый класс, чтобы он содержал все свои свойства плюс свои собственные. конструктор с тремя свойствами должен вызвать соответствующий супер-конструктор для инициализации общих свойств

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...