首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有趣的API模式

有趣的API模式
EN

Stack Overflow用户
提问于 2011-06-12 02:52:40
回答 3查看 327关注 0票数 5

在研究Neo4J源代码时,我注意到它们使用了一种非常有趣的模式来将接口与实现解耦。有一个仅由NodeProxy类实现的Node接口。NodeProxy反过来委托给NodeImpl,你会认为它也实现了Node,但它没有。NodeImpl有相同的方法和相同的签名,是Node的后端实现,但它没有实现Node。我以前使用过代理模式,但会像NodeProxy那样让NodeImpl实现节点。关于这种模式带来的好处有什么想法吗?

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

EN

回答 3

Stack Overflow用户

发布于 2011-06-12 03:12:04

如果您更详细地查看NodeImpl,您会发现与Node方法相对应的方法具有不同的签名-它们另外还带有一个NodeManager参数。

仅此一点就使得它们不可能实现Node接口。

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

票数 2
EN

Stack Overflow用户

发布于 2011-06-12 03:01:01

最重要的是,它迫使你通过NodeProxy而不是直接使用NodeImpl。我对Neo4J还不够熟悉,无法说明为什么在这种情况下这样做会有好处。也许NodeImpl没有的额外行为为NodeProxy提供了便利。

票数 1
EN

Stack Overflow用户

发布于 2011-06-12 03:03:36

此实现的主要效果将是恢复依赖关系。如果让NodeImpl实现Node,那么NodeImpl将依赖于Node。通过引入NodeProxy,您让NodePoxy依赖于NodeImpl,而NodeImpl不依赖任何东西。由于某种原因,在特定的上下文中,这可能是一个优势,也可能是必要的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6317877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档