查看Bridge模式的this explanation,它表示抽象和实现者是接口。但是我没有看到他们不能成为抽象类的原因。
示例:想象一下,来自AbstractionImp的所有构造函数将始终接收1个参数,实现者,以及构造函数所做的唯一事情,就是将该参数存储在AbstractionImp字段中。像这样:
public AbstractionImp(Implementor implementor) {
this.implementor = implementor;
}
那么为什么不在其他AbstractImp类上重复这个alll,为什么不改用它呢?注意:在这种情况下,AbstractionImp扩展Abstraction,这是一个抽象类。
public AbstractionImp(Implementor implementor) {
super(implementor);
}
public Abstraction(Implementor implementor) {
this.implementor = implementor;
}
如果我用抽象类替换接口,我是否违反了Bridge模式?像这样做,可以避免许多样板代码。