博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP设计模式:原型模式
阅读量:6422 次
发布时间:2019-06-23

本文共 1833 字,大约阅读时间需要 6 分钟。

sdfasd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<?php
/**
 
* 原型模式(深拷贝+浅拷贝)
 
*/
declare
(strict_types=1);
//开启强类型模式
 
class 
CopyObj
{
    
public 
$array
;
}
 
//抽象原型类
abstract 
class 
Prototype
{
    
protected 
$attach
;
 
    
public 
function 
__construct(CopyObj 
$obj
)
    
{
        
$this
->attach = 
$obj
;
    
}
 
    
public 
function 
set(
$name
$value
)
    
{
        
$this
->
$name 
$value
;
    
}
 
    
public 
function 
get(
$name
)
    
{
        
return 
$this
->
$name
;
    
}
 
    
public 
function 
getAttach()
    
{
        
return 
$this
->attach;
    
}
 
    
abstract 
public 
function 
clone
();
}
 
class 
DeepCopy 
extends 
Prototype
{
    
public 
function 
clone
()
    
{
        
$obj 
clone 
$this
;
        
return 
$obj
;
    
}
}
 
class 
ShallowCopy 
extends 
Prototype
{
    
public 
function 
clone
()
    
{
        
$serializeObj 
= serialize(
$this
);
        
$obj 
= unserialize(
$serializeObj
);
        
return 
$obj
;
    
}
}

123

123

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//----------深拷贝--------------
$chairman 
new 
CopyObj();
$chairman
->
array 
= [
'×××'
'×××'
'江泽明'
];
 
 
$deepCopyObj1 
new 
DeepCopy(
$chairman
);
$deepCopyObj2 
$deepCopyObj1
->
clone
();
 
echo 
"<pre>"
;
 
var_dump(
$deepCopyObj1
->getAttach());
var_dump(
$deepCopyObj2
->getAttach());
 
//修改对象
$chairman
->
array 
= [
'×××'
'×××'
];
var_dump(
$deepCopyObj1
->getAttach());
var_dump(
$deepCopyObj2
->getAttach());

asdsad

1
2
3
4
5
6
7
8
9
10
11
12
13
//-------------浅拷贝-------------
 
$start 
new 
CopyObj();
$start
->
array 
= [
'刘德华'
'张学友'
'郭富城'
'黎明'
];
$deepCopyObj3 
new 
ShallowCopy(
$start
);
$deepCopyObj4 
$deepCopyObj3
->
clone
();
var_dump(
$deepCopyObj3
->getAttach());
var_dump(
$deepCopyObj4
->getAttach());
 
//修改对象
$start
->
array 
= [
'周杰伦'
];
var_dump(
$deepCopyObj3
->getAttach());
var_dump(
$deepCopyObj4
->getAttach());
本文转自 hgditren 51CTO博客,原文链接:http://blog.51cto.com/phpme/2047833,如需转载请自行联系原作者
你可能感兴趣的文章
3-【python13_day2】
查看>>
IP路由原理
查看>>
内部类详解
查看>>
洛谷P2726 阶乘 Factorials 数学
查看>>
类加载机制
查看>>
火柴棒等式(2008年NOIP全国联赛提高组)
查看>>
mongodb int型id 自增
查看>>
【转】关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10)...
查看>>
绝大部分项目都是跟金融创新、互联网、移动互联网、社区经济、分享经济、互联网金融有关...
查看>>
Java中的4种代码块
查看>>
java语法:字符串数组的赋值
查看>>
Ocelot(七)- 入门
查看>>
生成水杯热气
查看>>
程序员工作心法
查看>>
三个常用的PHP图表类库
查看>>
春暖花开
查看>>
我们今年二十一二岁
查看>>
python中异常处理--raise的使用
查看>>
JavaScript中call,apply,bind方法的总结
查看>>
高中数学与初中数学的接轨点
查看>>