MVC-门面模式

门面模式提供了一个统一接口来访问多个子系统的不同接口,简化了客户端与子系统的交互。通过创建一个门面类,可以将复杂的操作封装起来,如在示例中,相机和闪光灯的操作被整合到一起,提高了代码的易用性和子系统的独立性。这种模式在需要为复杂子系统提供简单接口或者在层次化结构中时特别有用。
摘要由CSDN通过智能技术生成

门面模式

定义:门面模式(有时候也称外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口

优点
1、它对客户屏蔽了子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便
2、实现了子系统与客户之间的松耦合关系
3、如果应用需要,它并不限制它们使用子系统类。因此可以在系统易用性与能用性之间加以选择
适用场景
1、为一丝复杂的子系统提供一组接口2、提高子系统的独立性
3、在层次化结构中,可以使用门面模式定义系统的每一层的接口

class Light
{
    function turnOn()
    {
        echo '打开闪光灯<br>';
    }
    function turnOff()
    {
        echo '关闭闪光灯<br>';
    }
}

class Camera
{
    function active()
    {
        echo '打开照相机<br>';
    }
    function deactive()
    {
        echo '关闭照相机<br>';
    }
}

class Facade
{
    protected $light;
    protected $camera;

    function __construct()
    {
        $this->light = new Light();
        $this->camera = new Camera();
    }

    function start()
    {
        $this->light->turnOn();
        $this->camera->active();
    }

    function stop()
    {
        $this->light->turnOff();
        $this->light->deactive();
    }
}

//使用门面模式
$f = new Facade();
$f->start();
$f->stop();

//未使用门面模式
$light = new Light();
$camera = new Camera();
$light->turnOn();
$camera->active();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值