【发布时间】:2009-06-13 14:19:58
【问题描述】:
我正在学校学习 GRASP 模式,我对 Creator 模式有疑问。
假设您有三个类,Computer、UserRespository 和 User。
GRASP Creator 模式的规则之一告诉您将创建对象的责任分配给包含这些对象的类。按照本指南,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 方法没有很好地隐藏创建。如果 User 更改它的构造函数,您必须更改 createUser 方法以反映这些更改以及使用该方法的每个客户端。
那么使用这种模式有什么好处呢?
【问题讨论】:
标签: design-patterns repository coupling grasp