ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 第11章 装饰器模式 ### 装饰器模式 1. 装饰器模式(Decorator),可以动态地添加修改类的功能 2. 一个类提供了一项功能,如果要在修改并添加额外的功能,传统的编程模式,需要写一个子类继承它,并重新实现类的方法 3. 使用装饰器模式,仅需在运行时添加一个装饰器对象即可实现,可以实现最大的灵活性 ### 第一步:思考 假设我们要修改上一小节中画布的功能,如修改画布的颜色。按照传统的方式,我们需要使用继承的方式,重写画图的方法。 *D:\wamp\www\demo\oop\framework\index.php* ~~~ class Canvas2 extends Think\Canvas { function draw() { echo "<div style='color:red'>"; parent::draw(); echo "</div>"; } } $canvas1 = new Canvas2(); $canvas1->init(); $canvas1->rect(2,7,2,18); $canvas1->draw(); ~~~ 效果如图: ![](./img/11/01.png)