首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于下面的代码,哪种方法是实现切换用例的好方法?

对于下面的代码,哪种方法是实现切换用例的好方法?
EN

Stack Overflow用户
提问于 2019-03-26 03:23:48
回答 1查看 89关注 0票数 0

我发现的大多数地方都使用多态性而不是Switch case语句。我知道如果所有情况在switch case中都不同,那么使用多态性会更好。

如果几个案例具有相同的代码,会发生什么!哪种方法是好的?多态或切换大小写。

例如:

代码语言:javascript
复制
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()的单独副本。我认为它会使用更多的内存空间。

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

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

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-03-26 16:19:04

你的问题实际上不是关于Qt的,而是关于OOP编程的,不是吗?没有一个通用的答案,它取决于代码的复杂性。对于您的示例,看起来switch可以,但随着复杂性的增加,多态性成为更好的选择。

您的案例可能如下所示:

代码语言:javascript
复制
              base class containing the List
              /              |             \ 
             /               |              \ 
  intermediate 1-2    intermediate 3-4    intermediate 5-6-7
     /     \              /     \             /   |   \ 
    A1     A2            A3     A4           A5  A6   A7

每个中间派生类将执行与其他派生类相同的工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55345069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档