前控制器与外墙模式

Gin*_*eer 12 design-patterns

好吧,我已经在网上搜索了一下并发现了这个帖子,但它对我来说还是不太清楚.

前控制器模式和外墙模式之间究竟有什么区别?

据我所知到目前为止:Façade模式不包含任何业务逻辑,只是集中访问多个对象.

前端控制器执行相同的操作,但可能包含业务逻辑,以便根据输入数据等方式调用所调用的内容.

要理解这一点,以下简单的伪代码片段是否意味着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);
    }
Run Code Online (Sandbox Code Playgroud)

Façade可以调用应用程序的较低层,还是仅仅集中访问同一层上的许多组件?

据我了解,前端控制器协调完整的函数调用过程.

示例:Front控制器将检查数据,然后决定要采取的操作.然后,它将为每个后续调用较低级别的类编译数据,直到它到达可以提供给调用系统的合适响应.

我认为我对外墙模式的理解是错误的或过于简单化.如果我错了,请纠正我.

如果我对此的理解是正确的,那么将应用程序外观更改为Microsoft应用程序架构指南2.0中的前端控制器会更有意义吗?我在第18章中特别关注服务架构.(虽然我有Beta 2版本)

更新:感谢Rune的响应.为什么说将Facade更改为Front控制器是不正确的?我是Front-controller的忠实粉丝,因为它可以让所有低级别的东西更加受控制.因此,虽然它可能没有更多的意义,但这样做是否完全错误?如果是:为什么?

Run*_*ing 15

Front Controller模式定义了一个负责处理应用程序请求的组件.通常用作(例如)通道请求的"瓶颈"来整合每次需要执行的标准行为.

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

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

Facade是一个瘦包装器,除了用于在两个系统之间进行转换的逻辑之外,它不应包含任何逻辑.前端控制器没有这样的要求.

例如,参见:http://en.wikipedia.org/wiki/Facade_pattern

并回答有关AppArchGuide的问题:不,这不正确.


dem*_*ryu 7

Front Controller模式是一种架构模式(它在您的应用程序中强加了一种架构结构).

相比之下,Façade模式是一种设计模式(它用于构建应用程序[模块]的特定功能,并且不会强制整个应用程序上的结构).