【发布时间】:2010-03-11 03:56:46
【问题描述】:
所以我正在努力改进现有的实现。我有许多多态类,它们都组成更高级别的容器类。我目前正在处理的问题是更高级别的容器类,嗯,很糟糕。它看起来像这样,我真的没有问题(因为容器中的多态类应该是公共的)。我真正的问题是构造函数......
/*
* class1 and class 2 derive from the same superclass
*/
class Container
{
public:
boost::shared_ptr<ComposedClass1> class1;
boost::shared_ptr<ComposedClass2> class2;
private:
...
}
/*
* Constructor - builds the objects that we need in this container.
*/
Container::Container(some params)
{
class1.reset(new ComposedClass1(...));
class2.reset(new ComposedClass2(...));
}
我真正需要的是让这个容器类更易于重用。通过硬编码成员对象并实例化它们,它基本上不是而且只能使用一次。工厂是构建我需要的东西的一种方法(可能通过提供对象列表及其要创建的特定类型?)解决此问题的其他方法?似乎有人应该以前解决过它......谢谢!
【问题讨论】:
-
关于容器应该做什么的任何细节?它是否试图重新实现多态性?以后会不会将指针重置为其他一些对象?
-
不,不是重新实现多态性。它只是许多“组件”的容器。一般来说,一组组件会做一些有趣的事情。你可以用一组不同的组件组成一个不同的容器,然后做一些其他有趣的事情。没有理由重置指针 AFAIK。
-
太抽象了,除非偶然,否则无法给出有用的答案。您是要尝试重用具有不同 class1 和 class2 的相同容器实例,还是尝试重用容器的不同实例?可能 DI(威廉·比林斯利的回应)会有所帮助。
-
对不起那个汤姆。在重读它时,我同意。您将使用容器的不同实例。所以你会有 Container container1;容器容器2;并且每个都有不同的组合类。
标签: c++ design-patterns factory