我正在努力为这种情况选择完美的设计模式:
当我单击我的 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
是否使用了您的类的任何非静态成员变量(即实例数据)?
WebBrowserUtility
成为静态类而不是实现单例。你真的不需要只有一个实例,这就是单例模式的用途。静态类解决方案上的静态方法为您提供了所需的简单可访问性。不利的一面是,如果您为此编写单元测试,正确地对静态方法进行单元测试是有问题的。 关于design-patterns - 新类实例 vs 单例类 vs 静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7242297/