Как в поле одного объекта записать List другого объекта и поле по id
Даны три класса: User, Region и Post. Три текстовых файла, с соответствующими названиями, в которые заносятся через toString() данные полей.
class Region(Long id, String name){}
Region reg1 = new Region(1, "RU/");
Region reg2 = new Region(2, "EU/");
Region getById(Long id) {
return region("из файла нужный");
class Post(Long id, String name){}
Post post1 = new Post(1, "Статья1");
Post post1 = new Post(2, "Статья2");
Post getById(Long id) {
return post ("из файла нужный");
class User(Long id, Region region, List<Post> post){
public List<Post> getPost() {
return post;
}
public void setPost(List<Post> post) {
this.post = post;
}
public Region getRegion() {
return region;
}
public void setRegion(Region region) {
this.region = region;
}
}
Вопрос собственно в том, я не понимаю, как, допустим вводить нового Usera, чтобы при создании указывать new User(1, 1, 1); //первый "1"- id. второй "1"-номер листа?. третий "1" - id региона из файла Не понимаю я, создавать мне новые методы или в конструкторе как прописывать, чтобы при вводе id у меня в текстовый файл с юзером записывались List post и Region region. Надеюсь сжато ясно объяснил задачу, конечно, есть еще методы, которые в файл записывают и из файла читают, но думаю вопрос тут не в этом
Ответы (1 шт):
Сообственно не можете понять потому что это не правильно. По принципам SOLID у вас класс самый обычный и он не должен считывать себя откуда либо. Посморите примеры в основном какието лодеры/сервисы/утилиты которые возвращают вам объекты. А сами они ни очем не подозревают откуда они взялись и зачем.
Принцип единственной ответственности (англ. single-responsibility principle, SRP) — принцип ООП, обозначающий, что каждый объект должен иметь одну ответственность и эта ответственность должна быть полностью инкапсулирована в класс. Все его поведения должны быть направлены исключительно на обеспечение этой ответственности.
По собственно вопросу.
Делаете
class UserLoader {
String fileName ...
public UserLoader(...){...}
public User loadUser(Long id, Region region) { ..... }
}
PS. Всё это верно если я конечно понял ваш вопрос. Прошу не хейтить ответ вполне редактируем