我发现的大多数地方都使用多态性而不是Switch case语句。我知道如果所有情况在switch case中都不同,那么使用多态性会更好。
如果几个案例具有相同的代码,会发生什么!哪种方法是好的?多态或切换大小写。
例如:
QList<QString> ret;
switch (x)
{
case A1:
case A2: ret = QList<QString>() <<"A" <<"B" <<"C" ;
break;
case A3:
case A4: ret = QList<QString>() <<"E" <<"F" <<"G" << "H" <<"T" ;
break;
case A5:
case A6:
case A7: ret = QList<QString>() <<"H" <<"F" <<"K" << "L" <<"T" ;
break;
default: ret = QList<QString>();
break;
}
如果我使用多态性。
1)如果我为A1 - A7创建单独的类,那么我可能需要在所有派生类(A1- A7)中创建QList()的单独副本。我认为它会使用更多的内存空间。
我只放了示例代码,我的代码是不同的。
有没有人能建议我哪种方法适合这种情况?
谢谢。
发布于 2019-03-26 08:19:04
你的问题实际上不是关于Qt的,而是关于OOP编程的,不是吗?没有一个通用的答案,它取决于代码的复杂性。对于您的示例,看起来switch
可以,但随着复杂性的增加,多态性成为更好的选择。
您的案例可能如下所示:
base class containing the List
/ | \
/ | \
intermediate 1-2 intermediate 3-4 intermediate 5-6-7
/ \ / \ / | \
A1 A2 A3 A4 A5 A6 A7
每个中间派生类将执行与其他派生类相同的工作。
https://stackoverflow.com/questions/55345069
复制相似问题