可以将Facade称为内部使用吗?

时间:2014-01-19 16:55:30

标签: java design-patterns facade

我最近看到了一个带有 Facade 模式的EJB代码,以提供一些在表示层(JSF)中使用的方法。但是在业务逻辑的某些部分中,Facade的方法被调用并且已被使用。

这对我来说有点奇怪,因为我觉得Facade应该服务于外部世界而不是内部功能。我是对的还是我偏执狂?

这是一个粗略的(愚蠢的)图表来说明情况:

Facade's wanna-be

2 个答案:

答案 0 :(得分:1)

是的,你是对的! Facade通过隐藏其客户端的复杂性或随意性来提供复杂的界面。客户端可以是JSF查看页面或其他bean或服务。没有技术问题,只有当它的工作意图或责任完全相关时。

但一般来说,如果你用传统的方式进行分层,那就不应该像你所描述的那样。

答案 1 :(得分:1)

不,你不应该在我看来。外立面用于调节层之间的界面;它也不应该从图层内部使用。

它也没有必要。我假设getProductById将调用委托给某种获取Product的存储库。您可以使用依赖项注入将存储库注入适当的类中。在我刚刚编写的小UML示例中(已经有一段时间了,请原谅我,如果某些连接不正确)我演示了这种方法。

enter image description here

现在Report类可以访问ProductRepository并可以从那里获取数据,而不是通过Façade类。

相关问题