最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年04月25日 10:58:53   作者:編程人,在天涯  
這篇文章主要介紹了PHP設(shè)計(jì)模式之原型設(shè)計(jì)模式,簡(jiǎn)單描述了原型設(shè)計(jì)模式的概念、原理并結(jié)合實(shí)例形式分析了php原型設(shè)計(jì)模式的定義與使用方法,需要的朋友可以參考下

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

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

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

實(shí)例化對(duì)象的開銷。

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

PHP有一個(gè)內(nèi)置的克隆方法__clone()可以在設(shè)計(jì)模式中使用,但是不能直接訪問,使用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è)組織為例
**/
//部門抽象類
abstract class IAcmePrototype
{
  protected $id;   //員工ID號(hào)
  protected $name;  //員工名字
  protected $dept;  //員工部門
  //克隆方法
  abstract function __clone();
  //員工部門設(shè)置方法
  abstract function setDept($orgCode);
  //員工部門獲取方法
  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)部類
class Marketing extends IAcmePrototype
{
  const UNIT = "Marketing";  //標(biāo)識(shí)
  //市場(chǎng)部門類別
  private $sales = "sales";
  private $promotion = "promotion";
  private $strategic = "strategic planning";
  //克隆函數(shù)
  function __clone()
  {
  }
  //部門設(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";
    }
  }
}
//管理部類
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;  //市場(chǎng)部類實(shí)例
  private $manage;  //管理部類實(shí)例
  private $engineer; //工廠部類實(shí)例
  //構(gòu)造函數(shù)
  public function __construct()
  {
    $this->makeConProto();
    //市場(chǎng)部類實(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);
    //管理部類實(shí)例克隆
    $Ricky = clone $this->manage;
    $this->setEmployee($Ricky,"Ricky Rodrigues",203,"rr203-5634");
    $this->showEmployee($Ricky);
    //工程部類實(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í)例化部門對(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)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

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

相關(guān)文章

  • php 用checkbox一次性刪除多條記錄的方法

    php 用checkbox一次性刪除多條記錄的方法

    一次性刪除多條記錄,對(duì)于比較多的信息,如果沒有批量刪除功能是非常麻煩的。這樣就方便多了。
    2010-02-02
  • PHP使用strrev翻轉(zhuǎn)中文亂碼問題的解決方法

    PHP使用strrev翻轉(zhuǎn)中文亂碼問題的解決方法

    這篇文章主要介紹了PHP使用strrev翻轉(zhuǎn)中文亂碼問題的解決方法,通過自定義函數(shù)遍歷字符串并設(shè)置編碼格式解決亂碼問題,需要的朋友可以參考下
    2017-01-01
  • PHP對(duì)象克隆clone用法示例

    PHP對(duì)象克隆clone用法示例

    這篇文章主要介紹了PHP對(duì)象克隆clone用法,結(jié)合實(shí)例形式分析了php淺克隆與深克隆的相關(guān)概念、特點(diǎn)與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-09-09
  • php中將時(shí)間差轉(zhuǎn)換為字符串提示的實(shí)現(xiàn)代碼

    php中將時(shí)間差轉(zhuǎn)換為字符串提示的實(shí)現(xiàn)代碼

    通過傳入數(shù)據(jù)庫中存儲(chǔ)的文章發(fā)表時(shí)的UNIX時(shí)間戳,來轉(zhuǎn)化為例如 幾分鐘前,幾小時(shí)前,幾天前 這樣的提示。
    2011-08-08
  • php簡(jiǎn)單判斷文本編碼的方法

    php簡(jiǎn)單判斷文本編碼的方法

    這篇文章主要介紹了php簡(jiǎn)單判斷文本編碼的方法,涉及php數(shù)組及iconv方法的相關(guān)使用技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • php 定界符格式引起的錯(cuò)誤

    php 定界符格式引起的錯(cuò)誤

    下面是一個(gè)錯(cuò)誤的代碼,能看出哪里出錯(cuò)了么??對(duì)于我這個(gè)初學(xué)者什么都是蒙蒙懂的,真的無從下手,但是真的要自己嘗試了才知道哪里錯(cuò)了,書和教程都不會(huì)告訴我哪里錯(cuò)了
    2011-05-05
  • php curl操作API接口類完整示例

    php curl操作API接口類完整示例

    這篇文章主要介紹了php curl操作API接口類,結(jié)合完整形式形式分析了php針對(duì)curl請(qǐng)求發(fā)送、獲取、設(shè)置、關(guān)閉連接等操作封裝技巧,需要的朋友可以參考下
    2019-05-05
  • php在服務(wù)器執(zhí)行exec命令失敗的解決方法

    php在服務(wù)器執(zhí)行exec命令失敗的解決方法

    出于安全的原因,服務(wù)器是不允許php或者其他語言執(zhí)行exec命令的,當(dāng)你有特殊需要php在服務(wù)器執(zhí)行exec命令時(shí),你需要設(shè)置兩個(gè)地方,不然就無法執(zhí)行成功
    2012-03-03
  • PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能示例

    PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能示例

    這篇文章主要介紹了PHP+MySQL實(shí)現(xiàn)輸入頁碼跳轉(zhuǎn)到指定頁面功能,結(jié)合實(shí)例形式分析了php連接mysql數(shù)據(jù)庫進(jìn)行數(shù)據(jù)查詢及分頁顯示、指定頁數(shù)跳轉(zhuǎn)顯示等相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • php提高網(wǎng)站效率的技巧

    php提高網(wǎng)站效率的技巧

    隨著國內(nèi)PHP開發(fā)的興起,代碼優(yōu)化成了老生常談的話題了。作者本人時(shí)不時(shí)也會(huì)跑到CSDN壇論與人交流交流有交PHP開發(fā)和優(yōu)化問題,這也是可以使自身快速提高的方法。
    2015-09-09

最新評(píng)論

南开区| 九龙县| 宿迁市| 多伦县| 洛隆县| 成安县| 安达市| 同江市| 东山县| 虎林市| 伊川县| 延长县| 曲松县| 兴文县| 易门县| 沂南县| 平塘县| 万宁市| 呼图壁县| 黄梅县| 和田县| 延安市| 增城市| 民勤县| 柳江县| 河池市| 龙海市| 延边| 中阳县| 察隅县| 三门峡市| 壶关县| 瓮安县| 厦门市| 葵青区| 辉县市| 阳春市| 定陶县| 昭苏县| 大悟县| 保山市|