門面模式

定義: 門面模式(有時候也稱爲外觀模式),是提供一個統一的接口去訪問多個子系統的多個不同接口,他爲子系統的一組接口提供一個統一的高層接口

按照流程寫的代碼:

<?php

//門面模式實例:打開照相機爲例

//兩部: 打開閃光燈,打開照相機
//     關閉閃光燈 ,關閉照相機

class Light
{
    function turnon()
    {
        echo "打開閃光燈";
    }

    function turnoff()
    {
        echo "關閉閃光燈";
    }
}

class Camera
{
    function active()
    {
        echo "打開照相機";
    }

    function deactive()
    {
        echo "關閉閃光燈";
    }
}

$light  = new Light();
$camera = new Camera();

$light->turnon();
$camera->active();

門面模式的代碼:

<?php

//門面模式實例:打開照相機爲例

//兩部: 打開閃光燈,打開照相機
//     關閉閃光燈 ,關閉照相機

class Light
{
    function turnon()
    {
        echo "打開閃光燈";
    }

    function turnoff()
    {
        echo "關閉閃光燈";
    }
}

class Camera
{
    function active()
    {
        echo "打開照相機";
    }

    function deactive()
    {
        echo "關閉閃光燈";
    }
}



class Facade
{
    protected $light;
    protected $camera;

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

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

    public function stop()
    {
        $this->light->turnoff();
        $this->camera->deactive();
    }
}

$f = new Facade();
$f->start();


優點:
1.他對客戶屏蔽了子系統組件,因而減少了客戶處理對象的數目並使子系統使用起來更加方便
2.實現子系統與客戶之間鬆耦合關係
3.如果應用需要,他並不限制他們使用子系統類,因而可以在系統能用性和易用性之間加以選擇

適用場景:
1.爲一些複雜的子系統提供一組接口
2.提供子系統的獨立性
3.在層次化結構中,可以使用門面模式定義系統的每一層接口

發佈了65 篇原創文章 · 獲贊 19 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章