代码之家  ›  专栏  ›  技术社区  ›  BeniaminoBaggins

Dart-Snackbar服务-全局函数vs静态类函数vs单例

  •  0
  • BeniaminoBaggins  · 技术社区  · 5 年前

    Get.snackbar(title, body, snackPosition: SnackPosition.BOTTOM); )为了将我的应用程序与软件包分离,并能够轻松地在另一个Snackbar实现中交换。

    我认为出于性能原因,它应该是单例的。我想称之为 VpSnackBar(title, body);

    在这里,我创建了这个singleton

    class VpSnackBar {
    
      VpSnackBar._privateConstructor();
    
      static final VpSnackBar instance = VpSnackBar._privateConstructor();
    
      static void show(String title, String body) {
        Get.snackbar(title, body, snackPosition: SnackPosition.BOTTOM);
      }
      
    }
    

    VpSnackBar.show(title, body);

    另一个选项是具有大写名称的全局函数,因此它可以像类一样使用:

    void VpSnackBar(String title, String body) {
      Get.snackbar(title, body, snackPosition: SnackPosition.BOTTOM);
    }
    

    VpSnackBar(标题、正文); VpSnackBar(标题、正文); 没有全局函数?哪种方式是最佳实践?

    0 回复  |  直到 5 年前
        1
  •  1
  •   Hugo Passos    5 年前

    这样我就可以安全地避免对包的任何潜在更改

    你不会以任何方式。

    我认为出于性能原因,它应该是单例的。

    我看到在实例化类时没有运行任何繁重的进程(比如IO),所以我不明白为什么要关注性能。考虑一下,对于每个小部件 build() 调用在一秒钟内多次发生,数百个类被实例化,它们不会影响应用程序的性能。

    但是,全局函数是一种糟糕的做法吗?

    哪种方式是最佳实践?

    正如我所说,我甚至看不到一开始包装snackbar的合理动机。但撇开这件事不谈,你的每一个解决方案对我来说都是公平的(只要你把函数的第一部分去资本化)。在这种情况下,您可能希望使用一个您觉得更舒服的。