假设我有一个班级面孔。我希望使用合成来构建面部。Face 有眼睛,所以我可以创建一个 Eyes 类并使用合成将眼睛添加到 Face。
但是,如果我将眼睛子类化怎么办,例如
class Eyes { ... };
class BlueEyes : public Eyes { ... };
class BrownEyes : public Eyes { ... };
? (假设接口都是相同的。)
是否可以在运行时组合 Face,比如根据提供给构造函数的某些参数,Face 会得到 BlueEyes 或 BrownEyes?