哪一个是为下面的代码实现Switch Case的好方法?

问题描述 投票:0回答:1

我发现的大部分地方都使用多态而不是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()的单独副本。我认为它会占用更多的内存空间。

我只放了示例代码我的代码是不同的。

请有人建议我哪种方法适合这种情况?

谢谢。

qt visual-c++ coding-style code-cleanup
1个回答
0
投票

你的问题不是关于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

每个中间派生类都将执行进一步派生类的共同工作。

© www.soinside.com 2019 - 2024. All rights reserved.