如果你有:
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);
}
}
答案 0 :(得分:0)
在您的情况下,第一个示例是更好的设计,因为在第二个示例中,您没有指定需要将哪些接口作为参数传递给Component。拥有Object类型的参数并不是一种好习惯,因为类的其他用户必须阅读构造函数以了解应该传入的内容。
如果您始终将这两个接口一起使用,则应将它们组合在一起。或者,如果您不是作者,则创建一个从两者继承的抽象类A,并让Component将类型A的对象作为参数。