-
Notifications
You must be signed in to change notification settings - Fork 0
/
phpVersionAcer.php
80 lines (67 loc) · 1.61 KB
/
phpVersionAcer.php
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
<?php
class Acer
{
private $_hasGirlFriend = false;
private $_hasHouse = false;
private $_hasCar = false;
private $_hasMoney = false;
private static $instance = null;
public function __construct()
{
self::$instance = $this;
echo "There is an acer".PHP_EOL;
$this->searchForGirlFriend();
}
protected function searchForGirlFriend()
{
$girls = new GirlFactory();
while(!$this->_hasGirlFriend){
$girl = $girls->foundAGirl();
$this->_hasGirlFriend = $girl->result(self::$instance);
}
echo "Finally acer find a girlfriend".PHP_EOL;
}
public function __get($property)
{
return $this->$property;
}
}
class GirlFactory
{
private $_count = 0;
public function foundAGirl()
{
echo "Acer find a girl".PHP_EOL;
if ($this->_count < 10) {
$this->_count++;
return new NormalGirl();
} else {
return new BitchGirl();
}
}
}
interface Girl
{
public function result($man);
}
class NormalGirl implements Girl
{
public function result($man)
{
if(!$man->_hasHouse && !$man->_hasCar && !$man->_hasMoney){
echo "Sorry, you looks ugly".PHP_EOL;
return false;
}else{
return true;
}
}
}
class BitchGirl implements Girl
{
public function result($man)
{
echo "Zhu Yun knows that though this man is simple, conservative, even unromantic, but honest, couldn't be better to be a husband".PHP_EOL;
return true;
}
}
$acer = new Acer();