010-PHP设计模式之门面模式

门面模式是一种设计模式,旨在提供一个统一的接口,使子系统更易于使用。通过Facade类,客户端可以间接与子系统交互,减少了系统间的依赖。这种模式提高了系统的灵活性和安全性,但可能违反开闭原则。常见使用场景包括独立子系统和预防低水平人员的风险。然而,门面不参与子系统的具体业务逻辑,保持稳定。示例代码展示了PHP中如何实现门面模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

十、门面模式

10.1 什么是门面模式

要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用

10.2 怎么实现门面模式

Facade 门面角色:客户端可以调用这个角色的方法。此角色知晓子系统的所有功能和责任

subsystem 子系统角色:可以同时有一个或者多个子系统。每一个子系统都不是一个单独的类,而是一个类的集合。子系统并不知道门面的存在

<?php

class Auth
{
    public function auth()
    {
        echo self::class,PHP_EOL;
    }
}

class JWTAuth
{
    public function auth()
    {
        echo self::class,PHP_EOL;
    }
}

class Facade
{
    private Auth $auth;
    private JWTAuth $jwtAuth;
    public function __construct()
    {
        $this->auth = new Auth();
        $this->jwtAuth = new JWTAuth();
    }

    public function auth()
    {
        $this->auth->auth();
    }

    public function jwtAuth()
    {
        $this->jwtAuth->auth();
    }
}

$facade = new Facade();
$facade->auth();
$facade->jwtAuth();

10.3 门面模式优点是什么

  • 减少系统的相互依赖:所有的依赖都是对门面对象的依赖,与子系统无关

  • 提高了灵活性:不管子系统内部如何变化,只要不影响到门面对象,任你自由活动

  • 提高安全性:想让你访问子系统的哪些业务就开通哪些逻辑,不在门面上开通的方法,你休想访问到

10.4 门面模式缺点是什么

门面模式最大的缺点就是不符合开闭原则,对修改关闭,对扩展开放

10.5 门面模式的使用场景

  • 子系统相对独立——外界对子系统的访问只要黑箱操作即可

  • 预防低水平人员带来的风险扩散

10.6 门面模式的注意事项

  • 一个子系统可以有多个门面:门面已经庞大到不能忍受的程度、子系统可以提供不同访问路径

  • 门面不参与子系统内的业务逻辑:门面角色应该是稳定,它不应该经常变化,它是一个系统对外的接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值