一、意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层次的接口,使得子系统更加容易使用【GOF95】 外部与子系统的通信是通过一个门面(Facade)对象进行。 二、门面模式结构图 三、门面模式中主要角色 门面(Facade)角色: 此角色将被客户端调用 知道哪些子系统负责处理请求 将用户的请求指派给适当的子系统 子系统(subsystem)角色: 实现子系统的功能 处理由Facade对象指派的任务 没有Facade的相关信息,可以被客户端直接调用 可以同时有一个或多个子系统,每个子系统都不是一个单独的类,而一个类的集合。每个子系统都可以被客户端直接调用,或者被门面角色调用。子系统并知道门面模式的存在,对于子系统而言,门面仅仅是另一个客户端。 四、门面模式的优点 1、它对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便 2、实现了子系统与客户之间的松耦合关系 3、如果应用需要,它并不**它们使用子系统类。因此可以在系统易用性与能用性之间加以选择 五、门面模式适用场景 1、为一些复杂的子系统提供一组接口 2、提高子系统的独立性 3、在层次化结构中,可以使用门面模式定义系统的每一层的接口 六、门面模式与其它模式 调停者模式:Mediator模式与Facade模式的相似之处是,它抽象了一些已有类的功能。然而,Mediator目的是对同事之间的任意通讯进行抽象,通常集中不属于任何单个对象的功能。Mediator的同事对象知道中介者并与它通信,而不是直接与其他同类对象通信。相对而言,Facade模式仅对子系统对象的接口进行抽象,从而使它们更容易使用;它并定义不功能,子系统也不知道facade的存在 单例模式(singleton模式):一般来说,仅需要一个Facade对象,因此Facade对象通常属于Singleton对象。 七、门面模式PHP示例 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|