• [php]php设计模式 Decorator(装饰模式)


    1 <?php
    2 /**
    3 * 装饰模式
    4 *
    5 * 动态的给一个对象添加一些额外的职责,就扩展功能而言比生成子类方式更为灵活
    6 */
    7 header("Content-type:text/html;charset=utf-8");
    8 abstractclass MessageBoardHandler
    9 {
    10 publicfunction __construct(){}
    11 abstractpublicfunction filter($msg);
    12 }
    13
    14 class MessageBoard extends MessageBoardHandler
    15 {
    16 publicfunction filter($msg)
    17 {
    18 return"处理留言板上的内容|".$msg;
    19 }
    20 }
    21
    22 $obj=new MessageBoard();
    23 echo$obj->filter("一定要学好装饰模式<br/>");
    24
    25 // --- 以下是使用装饰模式 ----
    26 class MessageBoardDecorator extends MessageBoardHandler
    27 {
    28 private$_handler=null;
    29
    30 publicfunction __construct($handler)
    31 {
    32 parent::__construct();
    33 $this->_handler =$handler;
    34 }
    35
    36 publicfunction filter($msg)
    37 {
    38 return$this->_handler->filter($msg);
    39 }
    40 }
    41
    42 // 过滤html
    43 class HtmlFilter extends MessageBoardDecorator
    44 {
    45 publicfunction __construct($handler)
    46 {
    47 parent::__construct($handler);
    48 }
    49
    50 publicfunction filter($msg)
    51 {
    52 return"过滤掉HTML标签|".parent::filter($msg);; // 过滤掉HTML标签的处理 这时只是加个文字 没有进行处理
    53 }
    54 }
    55
    56 // 过滤敏感词
    57 class SensitiveFilter extends MessageBoardDecorator
    58 {
    59 publicfunction __construct($handler)
    60 {
    61 parent::__construct($handler);
    62 }
    63
    64 publicfunction filter($msg)
    65 {
    66 return"过滤掉敏感词|".parent::filter($msg); // 过滤掉敏感词的处理 这时只是加个文字 没有进行处理
    67 }
    68 }
    69
    70 $obj=new HtmlFilter(new SensitiveFilter(new MessageBoard()));
    71 echo$obj->filter("一定要学好装饰模式!<br/>");
  • 相关阅读:
    开发一款即时通讯App,从这几步开始
    即时通讯App怎样才能火?背后的技术原理,可以从这5个角度切入
    快速搭建一个“微视”类短视频 App
    iOS Push详述,了解一下?
    怒刷3000条短视频后,我终于发现网红300万点赞的套路
    如何精准实现OCR文字识别?
    30分钟彻底弄懂flex布局
    渲染管道
    游戏引擎架构Note2
    浮点数的内存表示方法
  • 原文地址:https://www.cnblogs.com/bluefrog/p/1925924.html
Copyright © 2020-2023  润新知