今回は、PHP プロトタイプ デザイン パターン ユースケース分析、PHP プロトタイプ デザイン パターンを使用する際の 注意事項 についてお届けします。以下は実際的なケースです。見てみましょう。
1. プロトタイピング デザイン パターンとは
プロトタイピング デザイン パターンは、インスタンス化されたオブジェクトをコピーするクローン技術を使用して、プロトタイプ インスタンスをコピーすることによって新しいオブジェクトを作成します。プロトタイピング デザイン パターンの目的は、クローン作成を使用してオブジェクトをインスタンス化するオーバーヘッドを削減することです。 プロトタイピングのデザインパターンでは、Client クラスは不可欠な部分です。 PHP には、デザインモードで使用できる組み込みのクローン作成メソッドがありますが、直接アクセスすることはできません。clone キーワードを使用するだけです。クローン作成では
コンストラクター は開始されません。 clone()
2. プロトタイピング デザイン パターンを使用する場合
プロジェクトでプロトタイプ オブジェクトの複数のインスタンスを作成する必要がある場合は、プロトタイピング デザイン パターンを使用できます。
3. プロトタイピングデザインパターンの例
ここでは現代の企業組織を例に挙げます:
<?php /** * 原型设计模式 * 以现代企业组织为例 **/ //部门抽象类 abstract class IAcmePrototype { protected $id; //员工ID号 protected $name; //员工名字 protected $dept; //员工部门 //克隆方法 abstract function clone(); //员工部门设置方法 abstract function setDept($orgCode); //员工部门获取方法 public function getDept() { return $this->dept; } //员工ID号设置方法 public function setId($id) { $this->id = $id; } //员工ID号获取方法 public function getId() { return $this->id; } //员工名字设置方法 public function setName($name) { $this->name = $name; } //员工名字获取方法 public function getName() { return $this->name; } } //市场部类 class Marketing extends IAcmePrototype { const UNIT = "Marketing"; //标识 //市场部门类别 private $sales = "sales"; private $promotion = "promotion"; private $strategic = "strategic planning"; //克隆函数 function clone() { } //部门设置函数 public function setDept($orgCode) { switch($orgCode) { case 101: $this->dept = $this->sales; break; case 102: $this->dept = $this->promotion; break; case 103: $this->dept = $this->strategic; break; default: $this->dept = "Unrecognized Marketing"; } } } //管理部类 class Management extends IAcmePrototype { const UNIT = "Management"; private $research = "research"; private $plan = "planning"; private $operations = "operations"; function clone() { } public function setDept($orgCode) { switch($orgCode) { case 201: $this->dept = $this->research; break; case 202: $this->dept = $this->plan; break; case 203: $this->dept = $this->operations; break; default: $this->dept = "Unrecognized Marketing"; } } } //工厂部类 class Engineering extends IAcmePrototype { const UNIT = "Engineering"; private $development = "programming"; private $design = "digital artwork"; private $sysAd = "system administration"; function clone() { } public function setDept($orgCode) { switch($orgCode) { case 301: $this->dept = $this->development; break; case 302: $this->dept = $this->design; break; case 303: $this->dept = $this->sysAd; break; default: $this->dept = "Unrecognized Marketing"; } } } //客户类 class Client { private $market; //市场部类实例 private $manage; //管理部类实例 private $engineer; //工厂部类实例 //构造函数 public function construct() { $this->makeConProto(); //市场部类实例克隆 $Tess = clone $this->market; $this->setEmployee($Tess,"Tess Smith",101,"ts101-1234"); $this->showEmployee($Tess); $Jacob = clone $this->market; $this->setEmployee($Jacob,"Jacob Jones",102,"jj101-2234"); $this->showEmployee($Jacob); //管理部类实例克隆 $Ricky = clone $this->manage; $this->setEmployee($Ricky,"Ricky Rodrigues",203,"rr203-5634"); $this->showEmployee($Ricky); //工程部类实例克隆 $Olivia = clone $this->engineer; $this->setEmployee($Olivia,"Olivia perez",302,"op302-1278"); $this->showEmployee($Olivia); $John = clone $this->engineer; $this->setEmployee($John,"John Jackson",301,"jj301-1454"); $this->showEmployee($John); } //实例化部门对象 private function makeConProto() { $this->market = new Marketing(); $this->manage = new Management(); $this->engineer = new Engineering(); } //员工信息设置方法 private function setEmployee(IAcmePrototype $employee,$name,$dept,$id) { $employee->setName($name); $employee->setDept($dept); $employee->setId($id); } //员工信息显示方法 private function showEmployee(IAcmePrototype $employee) { echo $employee->getName() . '<br />'; echo $employee->getDept() . '<br />'; echo $employee->getId() . '<br />'; } } $client = new Client(); ?>実行結果:
Tess Smith
salests101-1234推奨読書:Jacob Jones
promotion
jj101-22 34
リッキー・ロドリの推測
操作
rr203-5634
オリビア・ペレス
デジタルアートワーク
op302-1278
ジョン・ジャクソン
プログラミング
jj301-1454
この記事の事例を読んだ後、あなたはその方法を習得したと思います。 、php中国語ウェブサイトの他の関連記事にもご注目ください。
WeChatパブリックアカウントのaccess_tokenを取得する手順のPHP+cURL分析
以上がPHP プロトタイピング パターンのユースケース分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。