Java 用桥接模式中的抽象类替换接口

Java 用桥接模式中的抽象类替换接口,java,design-patterns,bridge,Java,Design Patterns,Bridge,从桥接模式的角度来看,它说抽象和实现者是接口。但是我不明白为什么它们不能成为抽象类 示例:假设AbstractionImp中的所有构造函数都将始终接收1个参数,实现者和构造函数所做的唯一事情就是将该参数存储在AbstractionImp字段中。像这样: public AbstractionImp(Implementor implementor) { this.implementor = implementor; } 那么,为什么不在其他AbstractImp类上重复这一点呢?注意:在本

从桥接模式的角度来看,它说抽象和实现者是接口。但是我不明白为什么它们不能成为抽象类

示例:假设AbstractionImp中的所有构造函数都将始终接收1个参数,实现者和构造函数所做的唯一事情就是将该参数存储在AbstractionImp字段中。像这样:

public AbstractionImp(Implementor implementor) {
   this.implementor  = implementor;
}
那么,为什么不在其他AbstractImp类上重复这一点呢?注意:在本例中,AbstractionImp扩展了抽象,它是一个抽象类

public AbstractionImp(Implementor implementor) {
   super(implementor);
}

public Abstraction(Implementor implementor) {
   this.implementor = implementor;
}

如果我用抽象类替换接口,是否违反了桥接模式?这样做可以避免大量样板代码。

抽象类定义接口。顾名思义,它是一种抽象。因此,它可以在桥接模式中使用,而不会“违反”模式。使用抽象类会使API更具限制性。现在,
Abstraction
必须是所有类(如
AbstractionImp
)的基础。意思是你失去了一些flexibility@flkes,说得好。我个人会使用接口,并让抽象类实现它。提供了代码重用的好处,并具有不绑定到抽象类的灵活性。非常有用的注释!干杯如果你愿意,把它作为答案,我会标记它。一个抽象类定义了一个接口。顾名思义,它是一种抽象。因此,它可以在桥接模式中使用,而不会“违反”模式。使用抽象类会使API更具限制性。现在,
Abstraction
必须是所有类(如
AbstractionImp
)的基础。意思是你失去了一些flexibility@flkes,说得好。我个人会使用接口,并让抽象类实现它。提供了代码重用的好处,并具有不绑定到抽象类的灵活性。非常有用的注释!干杯如果你愿意,把它作为答案,我会记下来。