从构造函数调用timeconsuming函数

时间:2009-09-04 16:42:59

标签: c++ design-patterns constructor

我现在正在寻找的是一组派生自公共基类的类。大多数(但不是全部)类需要一些通过模态对话框获得的输入参数。这些对话框在类的构造函数中设置和执行。只要对话框未完成,对象就不会完全构造。延迟构造函数的执行可能会出现什么问题?

我正在考虑使用回调机制替换所有内容,该回调机制提供给对话框以设置对象或使用工厂在构造后立即获取可用对象。有什么其他模式可以解决这种情况?

3 个答案:

答案 0 :(得分:4)

就语言而言,不会出现“问题”。构造函数可以随意使用。

可能出现问题的地方可能是混乱。使用该类的程序员是否会意识到构造函数会长时间阻塞该线程?

在不知道代码的任何细节的情况下,回调或其他异步机制可能会更好,以避免阻塞线程。

答案 1 :(得分:4)

这些课程做什么?如果他们不在那里只是为了管理UI,那么你就会出现关注点分离的问题......用户输入收集应该与处理该输入的类分开。

答案 2 :(得分:1)

我认为这是一个有效的设计选择。拥有一个名为“UserInput”的类是有意义的,它将在用户提供提供输入后完全构造。

它确实会导致与数据输入方法紧密耦合 - 交互式:例如,您将无法将这些类与模型数据一起使用。

因此,如果您需要灵活选择,请将数据条目与业务逻辑分离。如果您想要即时使用的对象,请在施工时请求用户输入。