Метод должен быть в классе, который реализует действие или в реализованном классе? - PullRequest
0 голосов
/ 25 апреля 2020

Может быть, название немного сбивает с толку, но я не знал, как правильно это сказать (мой Engli sh совсем не хорош, поэтому извините, если его сложнее понять).

Допустим, у нас есть 2 класса, Person и Group, и человек может присоединиться к группе. Оба получили коллекцию присоединившихся групп или лиц, которые уже присоединились к группе.

Я хочу метод, позволяющий мне это делать. Было бы лучше иметь метод в классе Person, который является joinGroup (Group g) или метод в группе, который является addPerson (Person p)? В любом случае, метод должен выполнять некоторые проверки, а не только добавлять объекты в Коллекции.

Я использую Java, но я думаю, что это не важно, так как это скорее вопросы дизайна.

Ответы [ 2 ]

1 голос
/ 25 апреля 2020

Может быть, вы можете сделать что-то вроде этого.

import java.util.ArrayList;
import java.util.Iterator;

public class Main {

    public static void main(String[] args) {
        Person person = new Person("Seko", "35");
        Group group = new Group("Family");
        group.addPersonToGroup(person);

        System.out.println("Groups belonging_to Seko person");
        person.printGroupList();
        System.out.println("Persons belonging_to family group");
        group.printPersonList();
    }

    static class Person {
        String name;
        String age;
        ArrayList<Group> groups = new ArrayList<>();
        public Person(String name, String age) {
           this.name = name;
           this.age = age;
        }
        private void joinToGroup(Group g) {
            groups.add(g);
        }

        private void printGroupList(){
            System.out.println(groups);
        }

        @Override
        public String toString() {
            return "Person{" +
                    "name='" + name + '\'' +
                    ", age='" + age + '\'' +
                    '}';
        }
    }

    static class Group {
        String groupName;
        ArrayList<Person> persons = new ArrayList<>();

        public Group(String groupName){
            this.groupName = groupName;
        }

        private void addPersonToGroup(Person p){
            persons.add(p);
            p.joinToGroup(this);
        }

        private void printPersonList(){
            Iterator<Person> iterate = persons.iterator();
            while(iterate.hasNext()){
                System.out.println(iterate.next());
            }

        }
        @Override
        public String toString() {
            return "Group{" +
                    "groupName='" + groupName + '\'' +
                    '}';
        }
    }
}
1 голос
/ 25 апреля 2020

Не все люди должны присоединиться к группе. То есть возможно, что человек не входит в какую-либо группу. Но у группы должен быть человек.

Так что я думаю, у группы должен быть метод adddPerson (Person)

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