-
Notifications
You must be signed in to change notification settings - Fork 700
/
test.php
56 lines (48 loc) · 1.21 KB
/
test.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
<?php
/**
* 行为型模式
*
* php状态模式
* 理解:行为随着状态变化
* 区别:
* - 策略的改变由client完成,client持有context的引用;而状态的改变是由context或状态自己,
* 就是自身持有context
* - 简单说就是策略是client持有context,而状态是本身持有context
* 使用场景:大量和对象状态相关的条件语句
*
* 下面我们来实现一个农民四季种菜
* 春季:玉米
* 夏季:黄瓜
* 秋季:白菜
* 冬季:菠菜
*
*
* @author TIGERB <https://github.com/TIGERB>
* @example 运行 php test.php
*/
// 注册自加载
spl_autoload_register('autoload');
function autoload($class)
{
require dirname($_SERVER['SCRIPT_FILENAME']) . '//..//' . str_replace('\\', '/', $class) . '.php';
}
/************************************* test *************************************/
use state\Farmer;
try {
// 初始化一个农民
$farmer = new Farmer();
// 春季
$farmer->grow();
$farmer->harvest();
// 夏季
$farmer->grow();
$farmer->harvest();
// 秋季
$farmer->grow();
$farmer->harvest();
// 冬季
$farmer->grow();
$farmer->harvest();
} catch (\Exception $e) {
echo 'error:' . $e->getMessage();
}