학교에서 GRASP 패턴을 배우고 있는데 Creator 패턴에 대한 질문이 있습니다.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 메서드를 변경하여 해당 변경 사항과 해당 메서드를 사용하는 모든 클라이언트를 반영해야합니다.
이 패턴을 사용하면 어떤 이점이 있습니까?