【发布时间】:2011-01-19 23:08:53
【问题描述】:
我想知道是否有人可以帮助我。
假设我有一些类如下:
class A { ... };
class B : public A { ... }
class C : public A { ... };
class D { ... };
class E : public D { ... };
class F : public D { ... };
现在我希望 B 类有一个 E 类型的对象作为成员,而 C 类有一个 F 类型的对象作为成员。
是否有一个很好的设计模式,我可以在 A 类中拥有某种指向 D 类的基指针,然后在 B 类中创建一个新的 E,在 C 类中创建一个新的 F。我想知道抽象工厂是否相似? .
我希望这不会太混乱......没有UML图很难解释!
【问题讨论】:
-
格式化您的代码。请在以后的帖子中自己做。
-
听起来你应该重新考虑你的设计。
-
如果您想为模式命名,那么它可能是一种受限制的策略形式,具体取决于对象的实际用途。我说受限制是因为尽管从 A 类的 POV 来看,成员可以是实现 D 的任何对象,但您的 B 和 C 类都将该对象限制为具体的成员变量,而不是从“外部”提供的任何对象。如果 B 和 C 之间的唯一区别是不同的成员变量,那么整个结构可以重新转换为基于策略的设计,即将 A 转换为模板,并将
B替换为A<E>和C替换为A<F>.
标签: c++ oop design-patterns inheritance class-design