ホームページ >バックエンド開発 >PHPチュートリアル >PHP デザイン パターン シリーズ - Adaptor_PHP チュートリアル

PHP デザイン パターン シリーズ - Adaptor_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:52:17966ブラウズ

アダプターとは:
アダプター設計パターンは、あるオブジェクトのインターフェースを、別のオブジェクトが予期するインターフェースに単純に適合させます。

デザインシナリオ:
最初にユーザー情報を提供するクラスである UserInfo クラスがあったとします。このクラスを初期に設計したとき、ユーザー名を取得するための getUserName メソッドのみを実装しました。
MyOldObject クラスでは、UserInfo クラスからユーザー情報を取得し、ユーザー名を出力します
時間が経つにつれて、古い UserInfo クラスはユーザー名を取得するメソッドしか提供しなくなり、ユーザーの年齢やその他の情報も取得する必要がなくなりました。
元のUserInfoクラスを変更しないように、UserInfoを継承してUserInfoAdapterクラスを作成し、年齢を取得するgetAgeなどのメソッドを実装します。
新しい MyNewObject クラスでは、UserInfoAdapter をインスタンス化し、ユーザーの名前と年齢を出力します。
このようにして、拡張するときに、元の UserInfo クラスとこのクラスを使用するインターフェイスを変更せずに、適応メソッドを通じて UserInfo クラスを拡張します
。 コード: UserInfo クラス、getUserName メソッドを実装します
[php]
//初期のユーザー クラスはユーザー名を取得するメソッドのみを実装していました
クラス UserInfo {

パブリック関数 getUserName() {
'initphp' を返します
}
}
コード: MyOldObject クラス、UserInfo クラスから情報を取得、ユーザー名を出力
[php]
include_once("UserInfo.php"); クラス MyOldObject {
パブリック関数 write() {
$UserInfo = 新しいユーザー情報
echo $UserInfo->getUserName(); }
}
$a = 新しい MyOldObject
$a->write(); コード: UserInfoAdapter クラス。時間の経過とともに、プロジェクトの要件は変化しており、UserInfo クラスでは新しい機能のニーズを満たすことができないようになりました。 [php]
include_once("UserInfo.php"); class UserInfoAdapter extends UserInfo{

パブリック関数 getUserAge() {
28 を返します。 }

パブリック関数 getUser() {
return array(
'ユーザー名' => $this->getUserName(),
'年齢' =>$this->getUserAge()
);
}
}
コード: 新しい関数クラスである MyNewObject クラスは、ユーザーの年齢と名前を出力する必要があります。UserInfo クラスではニーズを満たすことができず、UserInfoAdapter アダプター クラスを呼び出す必要があります
。 [php]
include_once("UserInfoAdapter.php"); クラス MyNewObject {
パブリック関数 write() {
$UserInfoAdapter = 新しい UserInfoAdapter; print_r($UserInfoAdapter->getUser());
}
}
$a = 新しい MyNewObject
; $a->write(); 作者: initphp



http://www.bkjia.com/PHPjc/478142.html

www.bkjia.com

本当

http://www.bkjia.com/PHPjc/478142.html

技術記事アダプターとは: アダプター設計パターンは、オブジェクトのインターフェースを、別のオブジェクトが予期するインターフェースに単純に適合させます。 設計シナリオ: 元々 UserInfo クラスがあった場合は、言及してください...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。