gpt4 book ai didi

design-patterns - 新类实例 vs 单例类 vs 静态方法

转载 作者:行者123 更新时间:2023-12-01 23:01:16 24 4
gpt4 key购买 nike

我正在努力为这种情况选择完美的设计模式:

当我单击我的 Swing UI 上的“浏览”按钮时,必须在 Web 浏览器上打开指定的 URL。此功能在此实用程序类中实现,如下所示:

//inside action Listener of the browse button I call the openURL method of the below class

class webBrowserUtility(){
void openURL(String url){
........
}
}

设计模式方法

方法 1) 我可以继续创建上述类的新实例并调用 openURL()。

方法 2) 单例:使 WebbrowserUtility 类成为单例,并在内存中保留该类的静态实例,以便能够在需要时调用该方法。

方法 3) 静态方法:将 openURL() 方法设为静态并根据需要调用 WebbrowserUtility.openURL(url)。

在我的第一种方法中,我担心它可能效率低下,因为每次单击浏览按钮都会创建 WebBrowserUtility 类的新实例。我对在选择 2) 和 3) 之间适应哪种方法感到困惑。你能帮我在这三种设计模式中为这个场景选择最好的吗?或者是否有更好的设计模式可以适应相同的情况?

最佳答案

首先,我建议您不要过度担心现阶段出现性能/效率问题的可能性,除非您有具体的理由相信这会是一个问题。等等,看看它是否真的是一个问题,然后相应地解决它。但是你可能会发现没有什么可担心的。

那么,问题是,您的 WebBrowserUtility 是否使用了您的类的任何非静态成员变量(即实例数据)?

  • 如果是,那么您必须使用方法 1. 并且每次都创建一个新实例。
  • 如果不是,那么我倾向于使用静态方法并使 WebBrowserUtility 成为静态类而不是实现单例。你真的不需要只有一个实例,这就是单例模式的用途。静态类解决方案上的静态方法为您提供了所需的简单可访问性。不利的一面是,如果您为此编写单元测试,正确地对静态方法进行单元测试是有问题的。
  • 关于design-patterns - 新类实例 vs 单例类 vs 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242297/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com