Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从构造函数调用耗时的函数_C++_Design Patterns_Constructor - Fatal编程技术网

C++ 从构造函数调用耗时的函数

C++ 从构造函数调用耗时的函数,c++,design-patterns,constructor,C++,Design Patterns,Constructor,我现在看到的是一组从公共基类派生的类。大多数(但不是全部)类都需要一些通过模态对话框获得的输入参数。这些对话框是在类的构造函数中设置和执行的。只要对话框没有完成,对象就不会完全构造。延迟构造函数的执行可能会出现什么问题 我想用一种回调机制来替换一切,这种机制提供给对话框来设置对象,或者在构建之后立即使用工厂来获取可用对象。还有什么其他模式可以解决这种情况 就语言而言,不会出现任何“问题”。构造函数可以随心所欲地使用多长时间 问题可能出在它可能引起的混乱中。使用该类的程序员会意识到构造函数会长时间

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

我想用一种回调机制来替换一切,这种机制提供给对话框来设置对象,或者在构建之后立即使用工厂来获取可用对象。还有什么其他模式可以解决这种情况

就语言而言,不会出现任何“问题”。构造函数可以随心所欲地使用多长时间

问题可能出在它可能引起的混乱中。使用该类的程序员会意识到构造函数会长时间阻塞线程吗


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

这些类做什么?如果它们不只是为了管理UI,那么您在关注点分离方面存在问题。。。用户输入收集应该与处理输入的类分开。

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

它还导致了与数据输入方法的紧密耦合-交互式:例如,您将无法将这些类用于模型数据

因此,如果您需要选择的灵活性,请将数据输入与业务逻辑解耦。如果您想随时使用对象,请在构建时询问用户输入