门面和业务代表模式之间的区别

Ank*_*kit 3 design-patterns java-ee

Facade和业务委托设计模式之间有什么区别.是不是都用于从客户端隐藏业务逻辑?

Boh*_*ian 8

委托站在客户端和实际实现之间,通常从客户端隐藏/过滤/扩充实现的某些功能.

Facade提供了一个包含更复杂逻辑和/或协调的课程粒度API,通常捆绑了多个协同工作的实现,通常是为了方便客户端.

每个来自java的例子:

委托:Collections.unmodifiableList()返回一个List,它保留对原始List的引用并为所有方法委托给它,但如果调用其mutator方法则抛出异常.

Facade:如果您曾经看过打印java DOM XML文档所需的大量代码,那么您要做的第一件事是创建一个实用工具方法来隐藏所有丑陋 - 该方法可以被视为外观.

  • 对于Facade的示例,假设您有一个授权服务,它公开了一个Facade以检查权利.因此,对于服务的用户来说,只需调用一个方法就可以轻松了解权利状态.但是,该服务可能在内部从数据库或缓存中查询权利状态并为用户处理角色et-all,从而为服务的用户提供易于使用的外观并隐藏复杂性 (2认同)