ホームページ >バックエンド開発 >PHPチュートリアル >クイック スタート: PHP アダプター パターンの簡単な紹介_PHP チュートリアル

クイック スタート: PHP アダプター パターンの簡単な紹介_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:28:321026ブラウズ

PHP については学ぶ価値のあることがたくさんあります。ここでは、主に PHP アダプター モードについて紹介します。インターフェイスの変更は、プログラマーが (しぶしぶではあるが) 受け入れて対処しなければならない一般的な問題です。プログラムプロバイダーはコードを変更し、さまざまなプログラミング言語や関連ライブラリが開発され、進化します。私の子供が持っている数多くのおもちゃの 1 つは、このジレンマを簡潔に表しています。自分の立場から外れている人を正当化することはできません。

質問

外部ライブラリのAPI変更によって引き起こされる不便をどのように回避しますか?ライブラリを作成した場合、API を変更した場合でも、ソフトウェアの既存ユーザーが正常にアップグレードできる方法を提供していただけますか?ニーズに合わせてオブジェクトのインターフェイスをどのように変更すればよいでしょうか?

ソリューション

PHP アダプター パターンは、オブジェクトに対してまったく異なるインターフェイスを提供します。アダプターを使用すると、クライアント コードのアップグレードや破棄の手間を省きながら、さまざまなクラスに共通のインターフェイスを実装できます。 (仮説ではなく) サードパーティ ライブラリの API が変更されたときに何が起こるかを考えてみましょう。以前は、クライアント コードをすべて変更するだけで済みましたが、状況はそれほど単純ではないことがよくありました。新しいバージョンのライブラリが提供する機能を利用する新しいプロジェクトに取り組んでいるかもしれませんが、以前のバージョンのライブラリと問題なく対話できる古いアプリケーションがすでに多数存在します。アップグレードによって他のアプリケーションのクライアント コードに触れる必要がある場合、これらの新機能の使用方法をデモンストレーションすることはできません。

注: コントロール ボディ パターン

PHP アダプター パターンは、コントロール ボディ パターンの最新の例です。アダプターの構造はプロキシ サーバー (Proxy) とデコレータ (Decorator) の構造に似ていますが、それらの違いは、アダプター (Adapter) の目的が、カプセル化されたクラスであるプロキシのインターフェイスを変更することであることです。サーバー (Proxy) とデコレータ (Decorator) はインターフェイスを変更しないままにします。

サンプルコード

APIが変更されたときにアプリケーションが影響を受けないように保護する方法を見てみましょう。適切なライブラリを懸命に探し、最終的に、メッセージを送信するように設計された (仮説上の) コード セットである HwLib を見つけたとします。以下は引用された内容です:

<ol class="dp-xml">
<li class="alt"><span><span>// PHP4  </span></span></li>
<li class=""><span>/**  </span></li>
<li class="alt"><span>* the HwLib helps programmers everywhere write their first program  </span></li>
<li class=""><span>* @package HelloWorld  </span></li>
<li class="alt"><span>* @version 1  </span></li>
<li class=""><span>*/  </span></li>
<li class="alt"><span>class HwLib {  </span></li>
<li class=""><span>/**  </span></li>
<li class="alt"><span>* Say “Hello”  </span></li>
<li class=""><span>* @deprec this function is going away in the future  </span></li>
<li class="alt"><span>* @return string  </span></li>
<li class=""><span>*/  </span></li>
<li class="alt"><span>function hello() {  </span></li>
<li class=""><span>return ‘Hello ‘;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>/**  </span></li>
<li class="alt"><span>* target audience  </span></li>
<li class=""><span>* @return string  </span></li>
<li class="alt"><span>*/  </span></li>
<li class=""><span>function world() {  </span></li>
<li class="alt"><span>return ‘World!’;  </span></li>
<li class=""><span>}  </span></li>
<li class="alt"><span>} </span></li>
</ol>

以下はライブラリ操作の例です:

<ol class="dp-xml">
<li class="alt"><span><span>$</span><span class="attribute"><font color="#ff0000">hw</font></span><span> =& new HwLib;  </span></span></li>
<li class="">
<span>echo $hw-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>hello(), $hw-</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>world(); </span>
</li>
</ol>

HwLib には完全なドキュメントがあります。このドキュメントの中で、作成者は、hello() メソッドは将来のバージョンではサポートされない (または削除される) と明確に述べています。次に、HwLib の第 2 バージョンがリリースされたとします。新しいgreet()メソッドがhello()を置き換えます。このライブラリの新しいバージョンは次のとおりです (コメントは抽出されています):

<ol class="dp-xml">
<li class="alt"><span><span>// version 2  </span></span></li>
<li class=""><span>class HwLib {  </span></li>
<li class="alt"><span>function greet() {  </span></li>
<li class=""><span>return ‘Greetings and Salutations ‘;  </span></li>
<li class="alt"><span>}  </span></li>
<li class=""><span>function world() {  </span></li>
<li class="alt"><span>return ‘World!’;  </span></li>
<li class=""><span>}  </span></li>
</ol>

www.bkjia.com本当http://www.bkjia.com/PHPjc/446448.html技術記事 PHP については学ぶ価値のあることがたくさんあります。ここでは主に、プログラマーが (しぶしぶではあるが) 受け入れて対処しなければならない一般的な問題として、PHP アダプター モードについて紹介します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。