有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java有趣的API模式

在研究Neo4J源代码时,我注意到它们使用了一种非常有趣的模式来将接口与实现分离。有一个Node接口,它仅由NodeProxy类实现。NodeProxy反过来委托给NodeImpl,您可能认为它也实现了Node,但它没有。NodeImpl具有具有相同签名的相同方法,并且是Node的支持实现,但它没有实现Node。我以前使用过代理模式,但会让NodeImpl像NodeProxy一样实现Node。关于这种模式带来的好处有什么想法吗

编辑1:多亏了Cirkel的评论,我现在知道它被称为Bridge pattern,主要目标是“将抽象与其实现解耦,以便两者可以独立变化”,这很有趣


共 (3) 个答案

  1. # 1 楼答案

    如果你更详细地看一下NodeImpl,你会发现那里与Node方法相对应的方法有不同的签名——它们还带有一个NodeManager参数

    这就使得他们不可能实现节点接口

    然后,NodeProxy维护对NodeManager的引用,然后可以将其传递给NodeImpl对象

  2. # 2 楼答案

    它的网络是,它迫使你通过NodeProxy,而不是直接与NodeImpl合作。我对Neo4J还不太熟悉,无法解释为什么在这种情况下这样做是有利的。也许NodeProxy中包含了NodeImpl没有的其他行为

  3. # 3 楼答案

    这种实现的主要效果是恢复依赖关系。如果让NodeImpl实现Node,那么NodeImpl将依赖于Node。通过引入NodeProxy,可以让NodeProxy依赖于NodeImpl,而NodeImpl不依赖任何东西。在特定情况下,出于某种原因,这可能是一种优势或必要