gpt4 book ai didi

design-patterns - 前端 Controller 与外观模式

转载 作者:行者123 更新时间:2023-12-03 18:35:50 24 4
gpt4 key购买 nike

好的,我在网上搜索了一下,发现this线程,但它仍然对我来说不太清楚。

前端 Controller 模式和外观模式之间究竟有什么区别?

据我了解到目前为止:
外观模式不包含任何业务逻辑,而只是集中访问多个对象。

Front Controller 做同样的事情,但可能包含业务逻辑,以方便根据输入数据等决定调用什么。

为了理解这一点,以下简单的伪代码片段是否意味着 drawLine 是一个 Façade 以简化将坐标转换为点然后实现实际工作的 draw 方法?

    private void drawLine(Int32 StartX, Int32 StartY, Int32 EndX, Int32 EndY)
{
Point Start = new Point(StartX, StartY);
Point End = new Point(EndX, EndY);

Draw(Start, End);
}

Façade 是否可以调用应用程序的较低层,或者它真的只是为了集中访问同一层上的许多组件?

据我了解,前端 Controller 协调完整的函数调用过程。

示例:前端 Controller 将检查数据,然后决定采取什么行动。然后它将为每个后续调用较低级别的类编译数据,直到它到达可以提供给调用系统的合适响应。

我认为我对 Façade 模式的理解是错误的或者过于简单化了。如果我错了,请纠正我。

如果我对此的理解是正确的,那么将应用程序外观更改为 Microsoft Application Architecture Guide 2.0 中的前端 Controller 是否更有意义? ?我特别关注第 18 章中的服务架构。(虽然我有 Beta 2 版本)

更新:感谢您的精彩回应 rune 。为什么说将 Facade 更改为 Front Controller 是不正确的?我是 Front-controller 的忠实粉丝,因为它可以让所有较低级别的东西更加可控。因此,尽管它可能没有更多意义,但这样做是完全错误的吗?如果是:为什么?

最佳答案

前端 Controller 模式定义了一个负责处理应用程序请求的组件。通常用作(例如) channel 请求的“瓶颈”,以巩固每次都需要执行的标准行为。

请参阅以下链接以简要说明要点:

  • http://java.sun.com/blueprints/patterns/FrontController.html
  • http://www.oracle.com/technetwork/java/frontcontroller-135648.html
  • http://martinfowler.com/eaaCatalog/frontController.html

  • 另一方面,Facade 用于包装其他方法/服务以提供统一的接口(interface)、隐藏复杂性或减少对外部系统的依赖(例如 DDD 的反腐败层: http://www.goeleven.com/blog/entryDetail.aspx?entry=168)等。

    外观是一个瘦包装器,除了用于在两个系统之间转换的逻辑外,不应包含任何逻辑。 Front Controller 没有这样的要求。

    例如: http://en.wikipedia.org/wiki/Facade_pattern

    并回答您有关 AppArchGuide 的问题:不,这是不正确的。

    关于design-patterns - 前端 Controller 与外观模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/839359/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com