プロトタイプ モードと PHP でのその使用例
ソフトウェア開発の発展に伴い、コードの再利用性、スケーラビリティ、その他の側面の設計と最適化に一層の注意が払われます。デザインパターンは、このニーズに応えて登場した考え方です。 PHP では、プロトタイプ パターンは比較的一般的な設計パターンであり、オブジェクトのクローンを作成し、オブジェクトの繰り返し作成を回避し、システム リソースを節約するのに役立ちます。この記事では、プロトタイプパターンを詳しく紹介し、使用方法と例を示します。
1. プロトタイプ パターンの概要
プロトタイプ パターンは、既存のオブジェクトをコピーして新しいオブジェクトを作成する方法を提供するオブジェクト作成パターンです。言い換えれば、新しいオブジェクトを再度作成することなく、既存のオブジェクトのクローンを作成することで新しいオブジェクトを作成できます。プロトタイプ パターンを使用すると、システム内で繰り返される多数のオブジェクト作成プロセスが削減され、オブジェクト作成プロセスが高速化され、システムの効率が向上します。
2. プロトタイプ パターンの基本構造
プロトタイプ パターンには、抽象プロトタイプ クラス、具象プロトタイプ クラス、クライアントという 3 つのコア要素が含まれています。このうち、具象プロトタイプクラスは、抽象プロトタイプクラスで定義された clone メソッドを実装してクローン作成操作を完了し、クライアントは具象プロトタイプクラスの clone メソッドを呼び出すことで新しいオブジェクトを生成します。
抽象プロトタイプ クラス:
abstract class Prototype { abstract public function clone(); }
具体的プロトタイプ クラス:
class ConcretePrototype extends Prototype { private $_name; public function __construct($name) { $this->_name = $name; } public function clone() { return new ConcretePrototype($this->_name); } }
クライアント:
$prototype = new ConcretePrototype('test'); $clone = $prototype->clone();
3. プロトタイプ パターンの適用シナリオ
#プロトタイプ モードは、次の状況に適しています。class Ad { private $_title; private $_content; public function setTitle($title) { $this->_title = $title; } public function setContent($content) { $this->_content = $content; } public function getTitle() { return $this->_title; } public function getContent() { return $this->_content; } }
class AdPosition { private $_name; private $_ads; public function __construct($name) { $this->_name = $name; $this->_ads = array(); } public function getName() { return $this->_name; } public function addAd($ad) { array_push($this->_ads, $ad); } public function getAds() { return $this->_ads; } }
class AdPrototype { protected $_ad; public function __construct() { $this->_ad = new Ad(); } public function getAd() { return clone $this->_ad; } }
class NewAdPrototype extends AdPrototype { public function __construct() { parent::__construct(); $this->_ad->setTitle('新品上市'); $this->_ad->setContent('全场满500元免费送货'); } }
$newPrototype = new NewAdPrototype(); $adPosition1 = new AdPosition('位置1'); $adPosition1->addAd($newPrototype->getAd()); //添加一个新广告 $adPosition1->addAd($newPrototype->getAd()); //添加一个新广告
以上がPHPのプロトタイプパターンとその使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。