ホームページ >バックエンド開発 >PHPチュートリアル >PHPクリエーターモードの簡単な分析、PHP作成の簡単な分析_PHPチュートリアル

PHPクリエーターモードの簡単な分析、PHP作成の簡単な分析_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:13:17955ブラウズ

PHPクリエイターモードの簡単な分析、PHP作成の簡単な分析

クリエイターモード:

クリエーター パターンでは、クライアントはオブジェクトの作成とアセンブリに責任を負いません。代わりに、オブジェクトの作成の責任はその特定のクリエーター クラスに引き継がれ、アセンブリの責任はアセンブリ クラスに引き継がれます。クライアントはオブジェクトの料金を支払うため、各クラスの責任が明確になります。
アプリケーション シナリオ: 作成は非常に複雑で、段階的に組み立てられます。

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

/**
*クリエイターモード
​*/
//ショッピングカート
クラスショッピングカート{
//選択された商品
プライベート $_goods = array();
//クーポンを使用しました
プライベート $_tickets = array();
パブリック関数 addGoods($goods) {
$this->_goods[] = $goods;
}
パブリック関数 addTicket($ticket) {
$this->_tickets[] = $ticket;
}
パブリック関数 printInfo() {
printf("goods:%s, ticket:%sn", implode(',', $this->_goods), implode(',', $this->_tickets));
}
}
//ショッピング カートの内容を復元したい場合、たとえばユーザーがブラウザを閉じて再度開くと、Cookie に基づいて復元されます
$data = 配列(
'グッズ' => array('服', '靴'),
'チケット' => 配列('マイナス10'),
);
//クリエイターモードを使用しない場合は、ビジネスクラスで段階的にショッピングカートを復元する必要があります
// $cart = new ShoppingCart();
// foreach ($data['goods'] as $goods) {
// $cart->addGoods($goods);
// }
// foreach ($data['tickets'] as $ticket) {
// $cart->addTicket($ticket);
// }
// $cart->printInfo();
//終了;
//ショッピングカートのデータアセンブリをカプセル化するクリエイタークラスを提供します
クラス CardBuilder {
プライベート $_card;
関数 __construct($card) {
$this->_card = $card;
}
関数 build($data) {
foreach ($data['goods'] as $goods) {
$this->_card->addGoods($goods);
}
foreach ($data['tickets'] as $ticket) {
$this->_card->addTicket($ticket);
}
}
function getCrad() {
return $this->_card;
}
}
$cart = 新しいショッピングカート();
$builder = 新しい CardBuilder($cart);
$builder->build($data);
echo "ビルダー:n の後";
$cart->printInfo();
?>

クリエーター パターンを使用して、複雑な内部データを持つオブジェクトのデータ アセンブリ プロセスをカプセル化した後、外部インターフェイスは非常にシンプルかつ標準化され、新しいデータ項目の追加や変更が外部に影響を及ぼさないことがわかります。

www.bkjia.com本当http://www.bkjia.com/PHPjc/917028.html技術記事 PHP クリエーター モードの簡単な分析、PHP クリエーター モードの簡単な分析: クリエーター モードでは、クライアントはオブジェクトの作成とアセンブリに責任を負いませんが、オブジェクトを作成する責任はクライアントに与えられます。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。