日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

facade 门面 php,php设计模式之门面(Facade)模式

發布時間:2025/3/8 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 facade 门面 php,php设计模式之门面(Facade)模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

該模式屬于結構型模式

什么是門面模式?

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

外部與子系統的通信是通過一個門面(Facade)對象進行。

其實門面模式就是把幾個子系統(實例或者類.統一一個統一的接口進行執行,客戶端不用關注子系統,只用門面即可)

通俗的來說:將多個接口封裝為一個接口,比如調用A()方法,實則A()方法內部進行了多次不同程度的封裝,我們不需要關心A()方法內部的封裝有多復雜只需要調用A()方法來實現我們的目的即可。

話不多說上demo代碼://門面模式模擬:打開以及關閉照相機為例

//兩步:打開閃光燈、打開照相機

//?????關閉閃光燈、關閉照相機

//閃光燈類

class?Light

{

public?function?turnOn()

{

echo?'打開閃光燈
';

}

public?function?turnOff()

{

echo?'關閉閃光燈
';

}

}

//照相機類

class?Camera

{

public?function?active()

{

echo?'打開照相機
';

}

public?function?deactive()

{

echo?'關閉照相機
';

}

}

//按照傳統模式來實現照相?代碼肯定是如下這么寫的

/*

$light??=?new?Light();

$camera?=?new?Camera();

$light->turnOn();??//打開閃光燈

$camera->active();?//開始照相

*/

//以上這種方式不好,因為用戶需要調用2個接口才能完成工作,那我們能不能只讓用戶調用1一個接口就可以完成這個工作呢?

/*********偉大的分割線之門面(Facade)模式登場************/

//創建一個門面類

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();

}

}

//測試

$facade?=?new?Facade();

$facade->start();?//開始照相

echo?'


';

$facade->stop();?//關閉照相

/**

*經過上面的門面模式這種方式的改造,我們再去照相的時候,對于用戶對于客戶端來說,使用的時候就非常方便了

*開始照相只需要調用一個start方法,關閉照相只需要調用一個stop方法

*/

優點:

1、它對客戶屏蔽了子系統組件,因而減少了客戶處理的對象的數目并使得子系統使用起來更加方便。

2、實現了子系統與客戶之間的松耦合關系。

3、如果應用需要,它并不限制它們使用子系統類。因此可以在系統易用性與能用性之間加以選擇。

適用場景:

1、為一些復雜的子系統提供一組接口。

2、提高子系統的獨立性。

3、在層次化結構中,可以使用門面模式定義系統的每一層的接口。

總結

以上是生活随笔為你收集整理的facade 门面 php,php设计模式之门面(Facade)模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。