将多个对同一对象的引用传递给方法是一种好习惯吗?

时间:2018-03-01 23:56:38

标签: java

如果你有:

class Component
{ 
   public Component(Interface1 interface1Instance, Interface2 interface2Instance)
   {

   this.interface1Instance = interface1Instance;
   this.interface2Instance = interface2Instance;

   }
}

然后在你使用它的类中:

class ComponentGroup implements Interface1, Interface2
{
    public ComponentGroup()
    {

    this.component = new Component(this, this);

    }

}

使用合成时,将同一个实例作为单独的参数传递给组件是不错的做法?

(编辑):

做上面提到的或者做的更好:

class Component
{ 
   public Component(Object object)
   {
       if(object instanceof Interface1){
           this.interface1Instance = interface1Instance;
       }
       if(object instanceof Interface2){
           this.interface2Instance = interface2Instance;
       }

   }
}

class ComponentGroup implements Interface1, Interface2
{
    public ComponentGroup()
    {

    this.component = new Component(this);

    }

}

1 个答案:

答案 0 :(得分:0)

在您的情况下,第一个示例是更好的设计,因为在第二个示例中,您没有指定需要将哪些接口作为参数传递给Component。拥有Object类型的参数并不是一种好习惯,因为类的其他用户必须阅读构造函数以了解应该传入的内容。

如果您始终将这两个接口一起使用,则应将它们组合在一起。或者,如果您不是作者,则创建一个从两者继承的抽象类A,并让Component将类型A的对象作为参数。