我想獲得關於以下三種設計模式的stackoverflow社區的意見。首先是實現繼承;第二個是接口繼承;第三個是中間地帶。我的具體問題是:哪個最好?實現/接口繼承設計問題
實現繼承:
class Base {
X x() const = 0;
void UpdateX(A a) { y_ = g(a); }
Y y_;
}
class Derived: Base {
X x() const { return f(y_); }
}
接口繼承:
class Base {
X x() const = 0;
void UpdateX(A a) = 0;
}
class Derived: Base {
X x() const { return x_; }
void UpdateX(A a) { x_ = f(g(a)); }
X x_;
}
中間地帶:
class Base {
X x() const { return x_; }
void UpdateX(A a) = 0;
X x_;
}
class Derived: Base {
void UpdateX(A a) { x_ = f(g(a)); }
}
我知道很多人喜歡接口繼承實現繼承。然而,後者的優點是,通過指向Base
的指針,可以內聯x(),並且可以靜態計算x_
的地址。