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