在我正在查看的某些代码中,我看到的东西在道德上等同于以下内容:
public class Foo
{
private Bar bar;
public MethodA()
{
bar = new Bar();
bar.A();
bar = null;
}
public MethodB()
{
bar = new Bar();
bar.B();
bar = null;
}
}
从逻辑上讲,该字段bar
是局部变量,因为其值永远不会在方法调用之间持久化。但是,由于许多方法都需要类型的对象,因此原始代码作者刚刚创建了一个type字段。Foo
Bar
Bar
- 这显然是不好的,对吧?
- 此反模式有名称吗?
MethodA
或MethodB
导致MethodA
或被MethodB
调用(并且bar
在bar.{A,B}()
被冒犯的情况下再次使用),即使没有并发,您也会遇到类似的问题。