ホームページ >バックエンド開発 >PHPチュートリアル >PHP のファサード パターンについて 1 つの記事で学習します
前の記事「 PHP のブリッジ モードについての簡単な話 」では、PHP のブリッジ モードについて紹介しましたが、次の記事では、PHP デザイン パターンのファサード モードについて説明します。
ファサード モードは外観モードとも呼ばれます。ファサードであれ外観であれ、それは私たちの顔と同じように、外の世界への媒体です。したがって、このモデルの最大の特徴は「見た目が良い」ということです。どのように言って?複雑なオブジェクト呼び出しがたくさんあると、特に古いシステムをアップグレードしたり保守したりするときに混乱します。ファサードを使用して、古いシステムの関数呼び出しをカプセル化します。外からは新しいシステムと同じように見えます。これがファサード パターンの目的です。
GoF 定義: サブシステム内のインターフェイスのセットに一貫したインターフェイスを提供します。Facade パターンは高レベルのインターフェイスを定義します。インターフェース このサブシステムを使いやすくします。
#GoF クラス図
##コード実装class SubSystemOne
{
public function MethodOne()
{
echo '子系统方法一', PHP_EOL;
}
}
class SubSystemTwo
{
public function MethodTwo()
{
echo '子系统方法二', PHP_EOL;
}
}
class SubSystemThree
{
public function MethodThree()
{
echo '子系统方法三', PHP_EOL;
}
}
class SubSystemFour
{
public function MethodFour()
{
echo '子系统方法四', PHP_EOL;
}
}
さらに 4 つまたは N のサブシステムを定義します。これについては何も言うことはありません。多くのサブシステムがあることは想像できますが、それらは必ずしもこれら 4 つのサブシステムと同じであるとは限りません。大きく異なる場合もあります。
class Facade { private $subStytemOne; private $subStytemTwo; private $subStytemThree; private $subStytemFour; public function __construct() { $this->subSystemOne = new SubSystemOne(); $this->subSystemTwo = new SubSystemTwo(); $this->subSystemThree = new SubSystemThree(); $this->subSystemFour = new SubSystemFour(); } public function MethodA() { $this->subSystemOne->MethodOne(); $this->subSystemTwo->MethodTwo(); } public function MethodB() { $this->subSystemOne->MethodOne(); $this->subSystemTwo->MethodTwo(); $this->subSystemThree->MethodThree(); $this->subSystemFour->MethodFour(); } }
これらのサブシステムはファサード クラスを通じてパッケージ化され、ファサードの新しく定義されたメソッドのみが外部に提供されます。
$facade = new Facade(); $facade->MethodA(); $facade->MethodB();
クライアント呼び出しは非常に簡単です。具体的にどのサブシステムが呼び出されるかを知る必要はありません。ファサード上のこれらのメソッドが何を行うかを知る必要があるだけです。
ファサード モードは非常にシンプルなので、プロジェクトで開発を行った本当の友人である限り、知らず知らずのうちにこのモードを使用しているはずです。#完全なコード: https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade.php
##例
完全なソース コード: https://github.com/zhangyue0503/designpatterns- php /blob/master/19.facade/source/facade-push.php
<?php class Send { private $aliYunService; private $jiGuangService; private $message; private $push; public function __construct() { $this->aliYunService = new AliYunService(); $this->jiGuangService = new JiGuangService(); $this->message = new MessageInfo(); $this->push = new PushInfo(); } public function PushAndSendAliYun() { $this->message->Send($this->aliYunService); $this->push->Push($this->aliYunService); } public function PushAndSendJiGuang() { $this->message->Send($this->jiGuangService); $this->push->Push($this->jiGuangService); } } class MessageInfo { public function Send($service) { $service->Send(); } } class PushInfo { public function Push($service) { $service->Push(); } } class AliYunService { public function Send() { echo '发送阿里云短信!', PHP_EOL; } public function Push() { echo '推送阿里云通知!', PHP_EOL; } } class JiGuangService { public function Send() { echo '发送极光短信!', PHP_EOL; } public function Push() { echo '推送极光通知!', PHP_EOL; } } $send = new Send(); $send->PushAndSendAliYun(); $send->PushAndSendJiGuang();
Description
これは今でもよく知られたレシピであり、馴染みのある味。ここで、サードパーティのサービス クラスはすべて古いインターフェイスであるか、すでに非常に複雑なインターフェイスであると想像できます。現時点では、外観パターンを使用すると、新しいシステムと連携して複雑さを軽減できます。
ただし、外観クラス自体が複雑さの原因になる可能性があることに注意してください。ただし、幸いなことに、単一の責任を遵守できます。原則として、1 つの外観クラスは 1 つのことを実行できます。推奨学習: 「PHP ビデオ チュートリアル
」
以上がPHP のファサード パターンについて 1 つの記事で学習しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。