关于装饰模式引发的思考

本人是一个模式学习的新手,学习到装饰模式的时候,我想到了一个问题,我是否可以利用一个属性值$message来对内容进行一些存储,就编下了下面的代码,始终没办法找到原因,我想得到的结果是:html过滤敏感词汇过滤测试一下 但是结果却是html过滤测试一下,于是我就思考是否是没有将$msg存到$message中,但是但是为什么结果又是html过滤测试一下,中断测试也没能找到答案,所以再这里想得到各位的帮助,一起讨论讨论这段代码,


<?php

    abstract class messageDetail

    {

        abstract function filter($msg);

    }


    class setmessage extends messageDetail

    {

        public function filter($msg)

        {

            return $msg;

        }

    }


    class messageHandle extends messageDetail

    {

        public $message;

        public $obj;

        public function __construct($obj)

        {

            $this -> obj = $obj;

        }


        public function filter($msg)

        {

            $this -> message = $msg;

        }

    }


    class htmlFilter extends messageHandle 

    {

        public function filter($msg)

        {

            parent::filter($msg);

            return 'html过滤'.$this->message;

        }

    }


    class ensitiveFilter extends messageHandle

    {

        public function filter($msg)

        {

            parent::filter($msg);

            return '敏感词汇过滤'.$this->message;

        }

    }


    $obj = new htmlFilter(new ensitiveFilter(new setmessage()));

    echo $obj -> filter('测试一下');


千万里不及你
浏览 485回答 0
0回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript