3
我听说分离数据和GUI更好。例如,我有一些数据。这是分层次的抽象的基础和具体类型的派生类,像如何分离分层数据和GUI?
class Data {};
class ConcreteDataA : public Data {};
class ConcreteDataB : public Data {};
而且我也有其层次GUI(例如,对话框)
class DataDialog {};
class ConcreteDataADialog : public DataDialog {};
class ConcreteDataBDilaog : public DataDialog {};
而且我想创建一个数据对话框对象数据对象。如果数据对象是ConcreteDataA,则创建ConcreteDataADialog,如果创建了B,B对话框。有一个简单的方法通过添加类数据的虚拟函数一样
virtual DataDialog* CreateDialog()
做,但如果我在数据类中添加此功能。它似乎违反了数据/ GUI分离原则。第二种方法是构建一个全局的CreateDialog函数,并根据dynamic_cast类型的数据对象创建对话框。这种方式对于许多马夫人来说也不是很好。任何其他方式来实现它?或者在实践中,第一种方式也行吗?非常感谢!
我的一个朋友告诉我使用反射。我认为这应该工作。
你能与我的情况下,一些简单的代码显示它?非常感谢! – user1899020
@ user1899020我加了一个例子。 –
这似乎与我手动ifs的第二种方式类似。谢谢。 – user1899020