学校で GRASP パターンを学んでいますが、Creator パターンについて質問があります。
Computer、UserRespository、およびUserの 3 つのクラスがあるとします。
GRASP Creator パターンの規則の 1 つは、オブジェクトを作成する責任を、それらのオブジェクトを含むクラスに割り当てるように指示します。このガイドラインに従うことで、UserRepository が User の作成者になる必要があります。
したがって、Computer がユーザーを作成する場合は、UserRespository に問い合わせます。
//in Computer's code
repo.createUser("John");
//in UserRepository
public void createUser(String name)
{
users.add(new User(name));
}
これにより、 ComputerがUserから効果的に分離されます。本当に?
明らかに、Computerには User への言及はありませんが、Computer は依然として User の作成と強く結びついていると思います。なんで?createUserメソッドは、作成をうまく隠していません。ユーザーがコンストラクターを変更する場合、 createUserメソッドを変更して、それらの変更と、メソッドを使用するすべてのクライアントを反映する必要があります。
このパターンを使用する利点は何ですか?