婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式原理與用法分析

PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式原理與用法分析

熱門(mén)標(biāo)簽:房產(chǎn)中介用的是什么外呼系統(tǒng) 長(zhǎng)沙做地圖標(biāo)注公司 寧波外呼營(yíng)銷(xiāo)系統(tǒng) 電話(huà)機(jī)器人銷(xiāo)售主要負(fù)責(zé)什么 地圖標(biāo)注專(zhuān)員怎么樣 遼寧ai電銷(xiāo)機(jī)器人價(jià)格 福建銀行智能外呼系統(tǒng)價(jià)格 四川保險(xiǎn)智能外呼系統(tǒng)供應(yīng)商 上海做外呼線(xiàn)路的通信公司

本文實(shí)例講述了PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式原理與用法。分享給大家供大家參考,具體如下:

一、什么是原型設(shè)計(jì)模式

原型設(shè)計(jì)模式使用一種克隆技術(shù)來(lái)復(fù)制實(shí)例化的對(duì)象,新對(duì)象是通過(guò)復(fù)制原型實(shí)例創(chuàng)建的。原型設(shè)計(jì)模式的目的是通過(guò)使用克隆以減少

實(shí)例化對(duì)象的開(kāi)銷(xiāo)。

在原型設(shè)計(jì)模式中,Client類(lèi)是不可缺少的一部分。

PHP有一個(gè)內(nèi)置的克隆方法__clone()可以在設(shè)計(jì)模式中使用,但是不能直接訪(fǎng)問(wèn),使用clone關(guān)鍵字即可。克隆不會(huì)啟動(dòng)構(gòu)造函數(shù)。

二、什么時(shí)候使用原型設(shè)計(jì)模式

如果一個(gè)項(xiàng)目要求你創(chuàng)建某個(gè)原型對(duì)象的多個(gè)實(shí)例,就可以使用原型設(shè)計(jì)模式。

三、原型設(shè)計(jì)模式實(shí)例

這里以現(xiàn)代企業(yè)組織為例:

?php
/**
*  原型設(shè)計(jì)模式
*        以現(xiàn)代企業(yè)組織為例
**/
//部門(mén)抽象類(lèi)
abstract class IAcmePrototype
{
  protected $id;   //員工ID號(hào)
  protected $name;  //員工名字
  protected $dept;  //員工部門(mén)
  //克隆方法
  abstract function __clone();
  //員工部門(mén)設(shè)置方法
  abstract function setDept($orgCode);
  //員工部門(mén)獲取方法
  public function getDept()
  {
    return $this->dept;
  }
  //員工ID號(hào)設(shè)置方法
  public function setId($id)
  {
    $this->id = $id;
  }
  //員工ID號(hào)獲取方法
  public function getId()
  {
    return $this->id;
  }
  //員工名字設(shè)置方法
  public function setName($name)
  {
    $this->name = $name;
  }
  //員工名字獲取方法
  public function getName()
  {
    return $this->name;
  }
}
//市場(chǎng)部類(lèi)
class Marketing extends IAcmePrototype
{
  const UNIT = "Marketing";  //標(biāo)識(shí)
  //市場(chǎng)部門(mén)類(lèi)別
  private $sales = "sales";
  private $promotion = "promotion";
  private $strategic = "strategic planning";
  //克隆函數(shù)
  function __clone()
  {
  }
  //部門(mén)設(shè)置函數(shù)
  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";
    }
  }
}
//管理部類(lèi)
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";
    }
  }
}
//工廠(chǎng)部類(lèi)
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";
    }
  }
}
//客戶(hù)類(lèi)
class Client
{
  private $market;  //市場(chǎng)部類(lèi)實(shí)例
  private $manage;  //管理部類(lèi)實(shí)例
  private $engineer; //工廠(chǎng)部類(lèi)實(shí)例
  //構(gòu)造函數(shù)
  public function __construct()
  {
    $this->makeConProto();
    //市場(chǎng)部類(lèi)實(shí)例克隆
    $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);
    //管理部類(lèi)實(shí)例克隆
    $Ricky = clone $this->manage;
    $this->setEmployee($Ricky,"Ricky Rodrigues",203,"rr203-5634");
    $this->showEmployee($Ricky);
    //工程部類(lèi)實(shí)例克隆
    $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);
  }
  //實(shí)例化部門(mén)對(duì)象
  private function makeConProto()
  {
    $this->market = new Marketing();
    $this->manage = new Management();
    $this->engineer = new Engineering();
  }
  //員工信息設(shè)置方法
  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();
?>

運(yùn)行結(jié)果:

Tess Smith
sales
ts101-1234
Jacob Jones
promotion
jj101-2234
Ricky Rodrigues
operations
rr203-5634
Olivia perez
digital artwork
op302-1278
John Jackson
programming
jj301-1454

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • php設(shè)計(jì)模式 Delegation(委托模式)
  • php設(shè)計(jì)模式之委托模式
  • PHP設(shè)計(jì)模式之建造者模式定義與用法簡(jiǎn)單示例
  • PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例
  • PHP耦合設(shè)計(jì)模式實(shí)例分析
  • PHP設(shè)計(jì)模式之觀察者模式定義與用法示例
  • PHP設(shè)計(jì)模式之適配器模式原理與用法分析
  • PHP設(shè)計(jì)模式之單例模式原理與實(shí)現(xiàn)方法分析
  • PHP常用的三種設(shè)計(jì)模式匯總
  • PHP設(shè)計(jì)模式之委托模式定義與用法簡(jiǎn)單示例

標(biāo)簽:延安 工商登記 深圳 澳門(mén) 佛山 宿遷 宜春 常德

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式原理與用法分析》,本文關(guān)鍵詞  PHP,設(shè)計(jì)模式,之,原型,原理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式原理與用法分析》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式原理與用法分析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 大洼县| 德保县| 诸城市| 乌苏市| 黔西| 浦东新区| 兰考县| 建水县| 徐闻县| 阿图什市| 哈密市| 卢龙县| 郓城县| 通榆县| 运城市| 岳池县| 台湾省| 小金县| 陆河县| 拜城县| 读书| 祁连县| 日照市| 长海县| 老河口市| 青龙| 繁峙县| 石屏县| 南投县| 调兵山市| 崇阳县| 台南县| 栖霞市| 永城市| 囊谦县| 托里县| 巧家县| 宁远县| 天祝| 淮滨县| 丰原市|