首页 / PHP / 关于装饰模式引发的思考
关于装饰模式引发的思考
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了关于装饰模式引发的思考,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2126字,纯文字阅读大概需要4分钟。
内容图文
本人是一个模式学习的新手,学习到装饰模式的时候,我想到了一个问题,我是否可以利用一个属性值$message来对内容进行一些存储,就编下了下面的代码,始终没办法找到原因,我想得到的结果是:html过滤敏感词汇过滤测试一下 但是结果却是html过滤测试一下,于是我就思考是否是没有将$msg存到$message中,但是但是为什么结果又是html过滤测试一下,中断测试也没能找到答案,所以再这里想得到各位的帮助,一起讨论讨论这段代码, 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('测试一下');
回复内容:
本人是一个模式学习的新手,学习到装饰模式的时候,我想到了一个问题,我是否可以利用一个属性值$message来对内容进行一些存储,就编下了下面的代码,始终没办法找到原因,我想得到的结果是:html过滤敏感词汇过滤测试一下 但是结果却是html过滤测试一下,于是我就思考是否是没有将$msg存到$message中,但是但是为什么结果又是html过滤测试一下,中断测试也没能找到答案,所以再这里想得到各位的帮助,一起讨论讨论这段代码,
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('测试一下');
纠正一个错误吧,htmlFilter类中的filter方法里返回的应该是:
return 'html过滤'.$this->message;
你这段代码的运行结果是:
html过滤测试一下
这里很明显,实际结果和代码的预期结果一致。为什么?我们看这一行:
$obj = new htmlFilter(new ensitiveFilter(new setmessage()));
这一行初始化了一个htmlFilter对象。同时把一个ensitiveFilter对象传入,但是由于htmlFilter类没有对传入对象处理,于是乎这个ensitiveFilter对象实际上就被抛弃了,自然我们也可以不管后面的setmessage了。于是乎自然而然,它只会输出“html过滤”了。
内容总结
以上是互联网集市为您收集整理的关于装饰模式引发的思考全部内容,希望文章能够帮你解决关于装饰模式引发的思考所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。