1

我最近看过 Netbeans 平台开发教程视频(现在称为 trail)(http://www.netbeans.org/kb/trails/platform.html

我一直想知道使用LookupNetbeans 的稳定性如何

这就是我对查找工作原理的理解

作为图像

在此处输入图像描述

作为伪代码(类结构)

{

((class A implements MyInterface)) , ((class B implements MyInterface))


[MyInterface (API)]

[CoreApplication] ([Lookup provide access to A and B via MyInterface ])

}

我的问题是,与高度耦合相比,上述实现是否产生了可靠的结果(也可以考虑从其他类访问静态变量、方法和内部类的场景)?

[我需要知道,如果我使用松散耦合并使用查找 api 来实现它。与紧密耦合的程序相比,我的程序会变得或多或少可靠吗?(我所说的可靠是指应用程序的稳定性、是否经常崩溃等因素)]

如果是这样,它是如何工作的?

4

2 回答 2

3

努力实现松耦合(以及编程到接口而不是实现)是您应该遵守的基本原则之一。

这样,您可以稍后更改实现(当您改变主意或规范更改时),而不会影响使用待更改类的依赖代码。

就像您在做生意,并且有一个受合同约束的承包商,可以按照商定的输入来做某些事情。当您决定要另一个承包商时(使用相同的投入做相同的事情,但花费更少或更快),您只需更换他而不影响您的业务。因为你不是紧密耦合的。这种不依赖于某些实体并仅通过接口(具有固定输入/输出的预定义方法集)“连接到它”的原则超出了编程概念,并且可以应用于生活/业务的其他领域,因为它是有益的东西。

于 2013-08-15T20:12:06.497 回答
2

我会说它(也)取决于你是否可靠。

想想看。您在查找中注册了 B 类,A 类需要 B 类能够提供的服务。A 类想要的只是服务,不管实现是否实际上来自 B 类、C 类、D 类或其他任何东西。因此,通过使用查找,您只需询问您的服务是否可用,如果可用就使用它。这里涉及到可靠性。假设在查找中找不到您要查找的服务,那么您需要确保在找不到该服务时系统不会中断。

NetBeans 中的场景可能如下所示:

RequiredService s = Lookup.getDefault().lookup(RequiredService.class);
if (s != null)
{
    s.doSomething(); // In this case the responsibility of reliability lies on the side of who implemented this service.
}
else
{
    // Now it's up to you to keep it reliable and perhaps let the user know that something went not as expected.
}

现在想象一下,你“紧紧地”依赖于 RequiredService 的实现,突然间,由于某种原因,它不再存在了。由于模块是在运行时在 NetBeans 中加载的,因此您会遇到那些 ClassLoader 异常,甚至没有机会决定在这种情况下要做什么。

于 2013-08-16T01:50:35.180 回答