这种反模式的名称是什么?方法签名是骗子

时间:2011-03-30 21:30:58

标签: oop design-patterns language-agnostic anti-patterns

反模式的名称是什么,其中方法采用通用的上帝对象,该对象具有方法可能需要的所有属性,而不是明确声明方法需要什么?

例如:

public class BaseRequest
{
    User user;
    Car car;
    CustomerRecords customerRecords;
    Folder folder;
    // ... etc for 10 - 20 other unrelated parameters
}

public void doSomething(BaseRequest request)
{
    User user = request.getUser();
    // do stuff with user, ignore all other attributes of request
}

而不是

public void doSomething(User user)
{
    // do stuff with user, since it's nice and clear what we want
}

注意 - 我不是指BaseRequest违反的单一责任原则。相反,我正在寻找反模式的名称,其中方法签名对其依赖关系“撒谎”。

此外,是否有任何好的博客文章简洁地解释了这种模式的邪恶,我可以指出某人?

2 个答案:

答案 0 :(得分:7)

Law of Demeter违规行为

答案 1 :(得分:1)

我会说这只是god object的影响。当神对象不存在时,不应存在问题。