对Yii2行为(behavior)的理解 跟继承的区别

zebrayoung

行为是一种设计模式,继承是编程语言的特性

继承:感觉更像物种的进化,物种的扩展,生成新的物种,这些新的物种又具有不同的特性。

也就是说,我必须生成新的具有某种特性或者功能的物种去实现我想要的。

行为:想要实现某种功能的时候需要借助别的工具,我想用笔记本电脑画画,那我就买一个触控板,接上就可以。

但是前提是我的笔记本要预留跟触控板链接的接口,behavior就相当于这个预留的接口。

区别:从实现方式上讲,继承要实现新的属性功能就必须生成一个新的对象。

而使用行为的方式,
一是不必对现有类进行修改,
二是PHP不支持多继承,但是Yii可以绑定多个行为,从而达到类似多继承的效果。

补充:Yii的行为我认为使用的是装饰模式,动态的给一个对象添加一些额外的职责,就增加功能而言,装饰模式比生成子类更为灵活。

参考文章:大话设计模式和http://www.digpage.com/

阅读 3.2k

232 声望
35 粉丝
0 条评论
232 声望
35 粉丝
文章目录
宣传栏