我想知道是否有一个很好的设计模式,我目前通过以下构造实现了什么:
我有一个要基于一组输入对象创建的对象。在我的特殊情况下,这些是流式对象。在计算过程中,我需要跟踪这么多状态,我不想将它作为函数参数传递,也不想污染我需要计算值的命名空间。所以我要做的是创建一个大致如下所示的类:
class objectCreator {
public:
objectCreator(stream_type & stream) : stream(stream) {
create();
}
std::unique_ptr<value_type> get() { return std::move(result); }
private:
void
create() { /* ... */ }
std::unique_ptr<value_type> result;
stream_type & stream;
// various state holding variables
};
我的问题是,清楚地调用get()
两次没有意义。我可以通过检查它是否已经被调用来防范它,但我想使用一个结构,它本质上可以防止一个人调用它两次。(注意:我已经将此对象包装在某个函数调用中,它不应该在其他任何地方使用,但这并不美观。)