学习php设计模式 php实现装饰器模式(decorator)
《:学习php设计模式 php实现装饰器模式(decorator)》要点: PHP教程动态的给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活【GOF95】 PHP教程? PHP教程二、装饰模式中主要角色 PHP教程
<?php
/**
* 抽象构件角色
*/
interface Component {
/**
* 示例办法
*/
public function operation();
}
/**
* 装饰角色
*/
abstract class Decorator implements Component{
protected $_component;
public function __construct(Component $component) {
$this->_component = $component;
}
public function operation() {
$this->_component->operation();
}
}
/**
* 具体装饰类A
*/
class ConcreteDecoratorA extends Decorator {
public function __construct(Component $component) {
parent::__construct($component);
}
public function operation() {
parent::operation(); // 调用装饰类的操作
$this->addedOperationA(); // 新增加的操作
}
/**
* 新增加的操作A,即装饰上的功能
*/
public function addedOperationA() {
echo 'Add Operation A <br />';
}
}
/**
* 具体装饰类B
*/
class ConcreteDecoratorB extends Decorator {
public function __construct(Component $component) {
parent::__construct($component);
}
public function operation() {
parent::operation();
$this->addedOperationB();
}
/**
* 新增加的操作B,即装饰上的功能
*/
public function addedOperationB() {
echo 'Add Operation B <br />';
}
}
/**
* 具体构件
*/
class ConcreteComponent implements Component{
public function operation() {
echo 'Concrete Component operation <br />';
}
}
/**
* 客户端
*/
class Client {
/**
* Main program.
*/
public static function main() {
$component = new ConcreteComponent();
$decoratorA = new ConcreteDecoratorA($component);
$decoratorB = new ConcreteDecoratorB($decoratorA);
$decoratorA->operation();
$decoratorB->operation();
}
}
Client::main();
?>
PHP教程以上就是使用php实现装饰模式的代码,还有一些关于装饰模式的概念区分,希望对大家的学习有所帮助. 欢迎参与《:学习php设计模式 php实现装饰器模式(decorator)》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |