php设计模式--装饰模式(七)装饰模式完成文章编辑

简介: php设计模式--装饰模式(七)装饰模式完成文章编辑

装饰器模式decorator

1. 装饰器模式(Decorator ) ,可以动态地添加修改类的功能

2.一个类提供了一项功能,如果要在修改并添加额外的功能,传统

的编程模式,需要写一个子类继承它,并重新实现类的方法

3.使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现

可以实现最大的灵活性

 

<?php
//装饰器模式做文章修饰功能
class BaseArt {
  protected $content;
  protected $art = null;
  public function __construct($content) { 
    $this->content = $content ;
  }
  public function decorator() {
    return $this->content;
  }
}
/*  
class BianArt extends BaseArt{
  public function decorator(){
   return parent::decorator()."小编加了摘要";
  }
}
  
class SEOArt extends BaseArt{
  public function decorator(){
   return parent::decorator()."SEO加了";
  }
}
//现在这两个是平级的没有了继承 也不知道先后顺序 怎么办?
  
$BA = new BaseArt('天天向上');
 $BA->decorator();
  
$art = new BianArt('art');
echo $art->decorator()  
*/
class BianArt extends BaseArt{
  public function __construct(BaseArt $art){
    //普通文章传过来 自己调用自己给加上内容
    $this->art=$art;
    $this->decorator();
  }
  public function decorator(){
   //return parent::decorator()."小编加了摘要";
  return $this->content= $this->art->decorator()."小编加了摘要";
  }
}
class SeoArt extends BaseArt{
  public function __construct(BaseArt $art){
    //普通文章传过来 自己调用自己给加上内容
    $this->art=$art;
    $this->decorator();
  }
  public function decorator(){   
  return $this->content= $this->art->decorator()."seo优化";
  }
}   
$con = new BianArt(new BaseArt('con'));
echo $con->decorator(); 
//呵呵接下来有意思了就是new中new
// new BianArt(new BaseArt)
$con2 = new SeoArt(new BianArt(new BaseArt('con')));
echo $con2->decorator();
?>

 

目录
相关文章
|
4天前
|
设计模式 算法 PHP
php设计模式--策略模式(六)
php设计模式--策略模式(六)
12 0
|
4天前
|
设计模式 PHP
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
php设计模式--观察者模式(4.1)面向过程完成页面内容切换
11 0
|
4天前
|
设计模式 Java PHP
php设计模式--简单工厂模式(一)
php设计模式--简单工厂模式(一)
15 0
|
4天前
|
安全 前端开发 PHP
采用PHP开发的医院安全(不良)事件系统源码 医院不良事件有哪些?又该怎样分类呢?也许这篇文章能给予你答案。
医疗安全不容忽视! 医疗不良事件有哪些?又该怎样分类呢?也许这篇文章能给予你答案。
17 1
采用PHP开发的医院安全(不良)事件系统源码 医院不良事件有哪些?又该怎样分类呢?也许这篇文章能给予你答案。
|
4天前
|
设计模式 算法 搜索推荐
【PHP开发专栏】PHP设计模式解析与实践
【4月更文挑战第29天】本文介绍了设计模式在PHP开发中的应用,包括创建型(如单例、工厂模式)、结构型和行为型模式(如观察者、策略模式)。通过示例展示了如何在PHP中实现这些模式,强调了它们在提升代码可维护性和可扩展性方面的作用。设计模式是解决常见问题的最佳实践,但在使用时需避免过度设计,根据实际需求选择合适的设计模式。
|
4天前
|
设计模式 Go
[设计模式 Go实现] 结构型~装饰模式
[设计模式 Go实现] 结构型~装饰模式
|
4天前
|
设计模式 PHP
php设计模式--观察者模式(4.2)PHP实现观察者模式
php设计模式--观察者模式(4.2)PHP实现观察者模式
16 0
|
4天前
|
设计模式 PHP
php设计模式--责任链模式(五)
php设计模式--责任链模式(五)
15 0
|
8月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
84 0