Я изучаю шаблон GRASP в школе, и у меня есть вопрос о шаблоне Творца.Разве GRASP Creator действительно отделяется?
Скажем, у вас есть три класса, Компьютер, UserRespository и пользователя.
В одном из правил шаблона GRASP Creator вы должны назначить ответственность за создание объекта классу, содержащему этот объект. Следуя этому руководству, UserRepository должен быть создателем User.
Так что если компьютер хочет создать пользователя, он попросит UserRespository.
//in Computer's code
repo.createUser("John");
//in UserRepository
public void createUser(String name)
{
users.add(new User(name));
}
Это эффективно разъединять компьютер от пользователя. В самом деле?
Очевидно, Компьютер не имеет ссылки на пользователя, но я думаю, что компьютер по-прежнему очень связан с созданием Пользователя. Зачем? Метод createUser плохо скрывает создание. Если Пользователь измените его конструктор, вам нужно будет изменить способ createUser, чтобы отразить эти изменения, а также каждый клиент, используя этот метод.
В чем преимущество использования этого шаблона?