ホームページ php教程 php手册 PHPの3層構造(その1) 簡単な3層構造

PHPの3層構造(その1) 簡単な3層構造

Jun 13, 2016 pm 12:15 PM
class php 優れた コード コピー 外観 に追加 単純 構造

コード 1 に示すように:

コード をコピーします。 コードは次のとおりです:


// コード 1
//外観層クラス
class LWordHomePage {
//メッセージを追加します
public function append($newLWord) {
//中間サービス層を呼び出します
$serv = new LWordServiceCore()
$serv- >append($newLWord);
}
}
// 中間サービス層
class LWordServiceCore {
// メッセージを追加
public function append( $newLWord) {
// データ アクセス層を呼び出します
$dbTask = new LWordDBTask();
$dbTask->append($newLWord);
}; >// データ アクセス層
class LWordDBTask {
//メッセージ追加
public function append($newLWord) {
//データ層コード (省略)
}
};


図 1 に示す実行タイミング図:



(図 1)、単純な 3 層構造のタイミング図

3 層構造の呼び出しシーケンスは、コードとタイミング図から直感的に理解できます。しかし、実際の開発では、この単純な 3 層構造ではニーズを満たすことができません。外観層と中間サービス層のコードから始めましょう。

外観レイヤー

LWordHomePage クラスの new キーワードを直接使用して、中間サービス クラス LWordServiceCore はハードコーディング メソッドです。 実際のプロジェクト開発プロセスでは、外観層と中間サービス層が別の人によって開発される場合があります。つまり、機能モジュールは複数の人によって完成されます。外観層の LWordHomePage クラスの開発進捗は、LWordServiceCore クラスが完全に開発されるまで待つことができません (つまり、 外観層は、中間のサービス層が完全に開発されるまで待って開始することはできません)。このような連携は非常に非効率です。 プロジェクトを複数人で同時に開発できるようにするには、コード設計をカットする必要があります。アピアランス層の開発進捗に合わせて、一時的な中間サービスクラスを編成することも可能です。中間サービス層が完全に開発されたら、それを置き換えるだけです...図 2 に示すように:

(図 2)、外観レイヤーは異なるサービス間を切り替えます

明らかに、このような要件を達成するために、新しいキーワードを直接使用して外観レイヤーで LWordServiceCore クラスを作成して呼び出すのは非常に柔軟性がありません。臨機応変かつ自由に切り替えるのは難しい! !中間サービス層の一時的な実装として機能する TempService クラスを作成できます。また、TempService と LWordServiceCore という 2 つのクラスも分析する必要があります。どちらもメッセージを追加するための同じ追加関数を持っていますが、1 つは一時的なもので、もう 1 つは本物です。 TempService クラスと LWordServiceCore クラスは両方ともパブリック関数を持っているため、共通の親クラスが必要です。このパブリック上位クラスには他のメンバーや属性が存在しないことを考慮して、このパブリック上位クラスはインターフェイス、つまり ILWordService! として定義されます。 UML クラス図を図 3 に示します。


(図 3) ILWordService インターフェイスの定義と実装

TempService または LWordServiceCore クラスのオブジェクトは、LWordHomePage クラス内で直接作成されません。作成プロセスはファクトリ クラス MyServiceFactory (シンプル ファクトリ モード) に渡されます。

このように、外観レイヤーの

LWordHomePage クラスは、ILWordService インターフェイスと外観レイヤーのみを認識する必要があります。コードは、外観層と特定のサービス コードの優れた分離を達成するために、特定の中間サービス コードが何であるかに注意を払います。 これは何に相当しますか?ちょうど 2 人のハードウェア エンジニアのように、1 人はコンピュータ グラフィックス カードを製造し、もう 1 人はコンピュータのマザーボードを製造します。グラフィックス カードを製造するエンジニアは、グラフィックス カードをテスト回路に挿入して、グラフィックス カードが適切に動作するかどうかをテストできます。同様に、マザーボードを製造するエンジニアは、マザーボードを別のテスト回路に挿入して、マザーボードが適切に動作するかどうかをテストすることもできます。 2 人のエンジニアが作業を完了したら、作業結果を結び付けることができます。これは、ほぼ半分の時間を節約できる並行開発方法です。ソフトウェアエンジニアリングの観点から、インターフェースコードを設計する際には、生産効率を向上させるために複数人による同時開発をサポートする必要があるかどうかも考慮する必要があります。

UML クラス図 (図 3 を参照) に従って、コード 2 に示すように PHP コードを変更します。


コードをコピーします

コードは次のとおりです:


// コード 2、ファクトリを通じてメッセージ サービスを作成し、
// 外観レイヤー クラス
class LWordHomePage {
// メッセージを追加
public function append($newLWord) {
// 中間サービスを呼び出します
$serv = MyServiceFactory::create();
// これは LWordService クラスではなく、ILWordService インターフェイスを操作していることに注意してください
$serv->append( $newLWord );
}
};

// メッセージ サービス インターフェイス
interface ILWordService {
public function append($newLWord); 🎜> //サービスファクトリークラス
class MyServiceFactory {
// メッセージの作成 service
public static function create() {
if (1) {
// 中間サービス層に戻る
return new LWordServiceCore();
} else {
// 一時的な実装を返します
return new TempService();
}
} // 一時サービス Class
class TempServiceimplements ILWordService {
//メッセージ追加
public function append($newLWord) {
//一時コード(省略)
}
};

// 中間サービス層
class LWordServiceCoreimplements ILWordService {
// メッセージを追加
public function append($newLWord) {
// データ アクセス層を呼び出す
$ dbTask = new LWordDBTask ();
$dbTask->append($newLWord)

};

クラス LWordDBTask {
// メッセージを追加
public function append($newLWord) {
// データ層コード (省略)
}
};





タイミング図を図 4 に示します。



(図 4) ファクトリ クラスを使用してメッセージ サービスを作成します

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHP:Web開発の重要な言語 PHP:Web開発の重要な言語 Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP対Python:違いを理解します PHP対Python:違いを理解します Apr 11, 2025 am 12:15 AM

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPとPython:2つの一般的なプログラミング言語を比較します PHPとPython:2つの一般的なプログラミング言語を比較します Apr 14, 2025 am 12:13 AM

PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

アクション中のPHP:実際の例とアプリケーション アクション中のPHP:実際の例とアプリケーション Apr 14, 2025 am 12:19 AM

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPの永続的な関連性:それはまだ生きていますか? PHPの永続的な関連性:それはまだ生きていますか? Apr 14, 2025 am 12:12 AM

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

PHP対その他の言語:比較 PHP対その他の言語:比較 Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHPおよびPython:コードの例と比較 PHPおよびPython:コードの例と比較 Apr 15, 2025 am 12:07 AM

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

See all articles