看到7yue的blog提出这个话题,我也活跃的发表了一些看法:
说的是开发效率还是flashplayer的执行效率? 论开发,尽量多用composition,少用inheritance。继承最好是在设计原形的时候一次定义妥当,或者在后期有必要有精力重构的时候用。继承就好像照着基类刻新模子,要有基类的样子,还要加上新的部分。组合就好像用现有的各部件模子拼出个东西来,自然要快一些。论执行效率,没有测试过。斗胆分析一下:composition在编译的时候,因为import较多,编译的swf文件可能会大一些,在执行脚本的时候可能会有更多的类似堆操作。inheritance相反,类似栈操作多些,因此inheritance执行效率高些。同样用模子作比喻,可能不太恰当。继承的模子一次浇注就出一个模型,加工的比较快。组合的模子需要注意每一个部件的范孔的浇注,自然慢了一些。后来7yue说他根据经验感觉是composition的执行效率高于inheritance。我就想着做一个实例来测试。
思路是用inheritance和composition的模式来完成同样的一件任务:用正弦填充一定长度的Array,然后再排序。
真是昏了头了,昨晚的代码主要计算量消耗的还是填充正弦和排序数组,ineritance和composition的效率的不同应该主要在与构造初始话的开销。寒自己一个! |