日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php设计模式原型模式,原型模式_设计模式_设计模式之原型模式 - Lane Blog

發布時間:2025/3/11 php 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php设计模式原型模式,原型模式_设计模式_设计模式之原型模式 - Lane Blog 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

10

8

Clicks: 6614 Date: 2014-04-21 21:48:35 Power By 李軒Lane

原型模式提取重復功能,避免了程序員喜歡復制粘貼的壞習慣。設計模式中的原型模式就是,用原型實例指定創建對象的重力,通過拷貝這些原型來創建新的對象從一個對象再創建另外一個可定制的對象,而且不需要知道創建的任何細節。

淺復制 VS 深復制:

淺復制是對數字,字符串等類型進行傳值復制,而對對象來講是引用復制,即只是對內存地址進行賦值而不是新建一個對象的變量。在淺復制中,對一個對象的屬性改變,另一個對象的該屬性也會被改變,類比于C語言的指針,PHP在調用方法時&$var的傳遞。

以PHP為代碼環境。

//家庭類

class Home{

public $money;

public function __construct($money){

$this->money = $money;

}

}

//家庭成員類

class member{

public $id;

public $name;

public $obj;

public function __construct($id, $name, Home $obj){

$this->setId($id);

$this->setName($name);

$this->obj = $obj;

}

public function setId($id){

$this->id = $id;

}

public function setName($name){

$this->name = $name;

}

public function display(){

echo 'ID為' . $this->id . ',名稱為' . $this->name . ',資產為' . $this->obj->money . '
';

}

public function __clone(){

//深度復制(克隆),因為克隆只能克隆數字,字符串等,對對象變量是引用傳值。

$this->obj = clone $this->obj;

}

}

//客戶端/接口

$obj1 = new member(1, '小軒', new Home('10000'));

$obj1->display();

$obj2 = clone $obj1;

$obj2->setId(2);

$obj2->setName('小瑋');

$obj2->obj->money = 2000;

$obj2->display();

//根據這句輸出可以看到,對象1和對象2值是不一樣的,刪掉上面的注釋部分再看,又是一樣的了,這就是深復制和淺復制。

$obj1->display();

?>

總結

以上是生活随笔為你收集整理的php设计模式原型模式,原型模式_设计模式_设计模式之原型模式 - Lane Blog的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。