デコレーターとは
デコレータモードは、元のオブジェクトの構造を変更せずに、既存のオブジェクトの内容や機能の一部を調整するために使用されます
。
応用シナリオ
ユーザー名情報を保存するために内部に UserInfo 配列を含む UserInfo クラスを設計します
addUser でユーザー名を追加
getUserList メソッドはユーザー名情報を出力します
ここで、追加したユーザー情報を大文字に変更する必要があります。元のクラスと元のデータ構造を変更する必要はありません。
私たちは、装飾と同じように、元のデータを装飾するこの必要な操作を完了する UserInfoDecorate クラスを設計しました
デコレーター パターンはアダプター パターンに似ていますが、デコレーターは主に既存のオブジェクト データ構造を変更しないための前提条件であることに注意する必要があります
コード: ユーザー情報
[php]
//デコレータ モードは、元のオブジェクトの構造を変更せずに、既存のオブジェクトのコンテンツや機能の一部を調整するために使用されます
クラス UserInfo {
パブリック $userInfo = array();
パブリック関数 addUser($userInfo) {
$this->userInfo[] = $userInfo;
}
パブリック関数 getUserList() {
print_r($this->userInfo);
}
}
コード: UserInfoDecorate には同じ装飾があり、元の UserInfo クラスを変更せずに、ユーザー情報の出力を大文字形式に変更します
[php]
include("UserInfo.php");
クラス UserInfoDecorate {
パブリック関数 makeCaps($UserInfo) {
foreach ($UserInfo->userInfo as &$val) {
$val = strtoupper($val);
}
}
}
$UserInfo = 新しいユーザー情報
$UserInfo->addUser('zhu');
$UserInfo->addUser('initphp');
$UserInfoDecorate = 新しい UserInfoDecorate
;
$UserInfoDecorate->makeCaps($UserInfo);
$UserInfo->getUserList();
作者: initphp
http://www.bkjia.com/PHPjc/478144.html
www.bkjia.com
技術記事