Home > Backend Development > PHP Tutorial > 三个类概括PHP的五种设计模式_PHP

三个类概括PHP的五种设计模式_PHP

WBOY
Release: 2016-06-01 12:10:17
Original
980 people have browsed it

工厂模式
单元素模式
观察者模式
命令链模式
策略模式
复制代码 代码如下:
class people {
private $name = '';
private $user = null;
private function __constract($name){/*此处private定义辅助实现 单元素模式*/
$this->name = $name;
}
public static function instance($name){/*此方法实现 工厂模式*/
static $object = null;/*此变量实现 单元素模式*/
if (is_null($object))
$object = new people($name);
return $object;
}
public function work_in($who=null)
{
if (is_null($who)) echo 'error';
else {
$this->user[] = $who;/*此数组变量实现 观察者模式*/
echo $who->work();/*此方法调用实现 策略模式*/
}
}
public function on_action($which=''){
if (empty($which)) echo 'error';
else {
foreach ($this->user as $user)
$user->action($which);/*此方法调用实现 命令链模式*/
}
}
}
$people = people::instance('jack');
$people->work_in(new student);
$people->work_in(new teacher);
$people->on_action('eat');
class student {
function work(){
echo '
我是学生,朝九晚五。';
}
function action($which){
if (method_exists($this, $which)) return $this->$which();
else echo 'you are wrong!';
}
function eat(){
echo '
我是学生,只能吃套餐。';
}
}
class teacher {
function work(){
echo '
我是老师,晚上备课最忙。';
}
function action($which){
if (method_exists($this, $which)) return $this->$which();
else echo 'i can not do it!';
}
function eat(){
echo '
我是老师,可以每天吃大餐。';
}
}

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template