PHP のファサード パターンについて 1 つの記事で学習します
前の記事「 PHP のブリッジ モードについての簡単な話 」では、PHP のブリッジ モードについて紹介しましたが、次の記事では、PHP デザイン パターンのファサード モードについて説明します。
ファサード モードは外観モードとも呼ばれます。ファサードであれ外観であれ、それは私たちの顔と同じように、外の世界への媒体です。したがって、このモデルの最大の特徴は「見た目が良い」ということです。どのように言って?複雑なオブジェクト呼び出しがたくさんあると、特に古いシステムをアップグレードしたり保守したりするときに混乱します。ファサードを使用して、古いシステムの関数呼び出しをカプセル化します。外からは新しいシステムと同じように見えます。これがファサード パターンの目的です。
Gof クラス図と説明
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;
}
}
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();
クライアント呼び出しは非常に簡単です。具体的にどのサブシステムが呼び出されるかを知る必要はありません。ファサード上のこれらのメソッドが何を行うかを知る必要があるだけです。
ファサード モードは非常にシンプルなので、プロジェクトで開発を行った本当の友人である限り、知らず知らずのうちにこのモードを使用しているはずです。- ファサード パターンは、複雑なサブシステムに単純なインターフェイスを提供する必要がある場合に非常に適しています。同時に、クライアントプログラムと抽象クラスの実装部分との間に大きな依存関係がある場合、ファサードパターンを導入して切り離し、サブシステムの独立性と保守性を向上させることもできます。さらに、階層サブシステムを構築する必要がある場合、ファサードはサブシステムの各層のエントリ ポイントとして機能します。
- フレームワークを使用したことがある人なら誰でも、Laravel でファサード システムを使用したことがあると思います。として: キャッシュ:: put()。 Laravel では、ファサードはマジック メソッド __callStatic() を使用して実装されます。次に、静的メソッドを使用してオブジェクトのメソッドを直接呼び出します。すごいと思いませんか?興味のある友人は、/Illuminate/Support/Facades/Facade.php にあるソース コードをチェックしてください。
- キー ポイント: 3 層構造または MVC も、ファサード パターンの表現です。前述したように、ファサード モードは階層サブシステムのメンテナンスに適しています。 MVC、MVP、MVVM の 3 層構造は基本的にすべて階層化のためのものであり、階層化の目的はシステムの複雑さを軽減することです。
#完全なコード: https://github.com/zhangyue0503/designpatterns-php/blob/master/19.facade/source/facade.php
##例
今回は、送信ディメンションでテキスト メッセージの送信をパッケージ化し、さまざまなテキスト メッセージのインターフェイスとプッシュ演算子をパッケージ化します。送信するときは、送信のみを使用する必要があります。 class さまざまなサードパーティのサービスを使用して、テキスト メッセージやプッシュ通知の送信を制御できます。考えてみると非常に便利です。
SMS 送信クラス図完全なソース コード: 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 つのことを実行できます。- 元のアドレス: https://juejin.cn/post/6844903988085653518
推奨学習: 「PHP ビデオ チュートリアル
」
以上がPHP のファサード パターンについて 1 つの記事で学習しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
