孰优孰劣
上面我们讨论了实现消息映射的两种方案:
1. 使用消息映射表
2. 使用虚函数
在效率上我们可以看出前者胜出,内存使用上后者胜出(前提是后者不使用查找表替换switch...case)。
所以看其来大家各有优劣。
使用消息映射表必然要使用宏,除非事先这些宏已经制作完成,否则如果写这样的宏必然是件非常痛苦的事情。所以消息映射表的方式通常被用在Framework的实作,比如MFC等。
而虚函数的制作相当方便,所以如果不是制作Framework的话,那么这个方案也是不错的。
更进一步的讨论:允许消息横流
作为Framework的实作者,你或许还需要让消息拥有横流的机会,即流向子系统而非父类。
上面我们讨论了实现消息映射的两种方案:
1. 使用消息映射表
2. 使用虚函数
在效率上我们可以看出前者胜出,内存使用上后者胜出(前提是后者不使用查找表替换switch...case)。
所以看其来大家各有优劣。
使用消息映射表必然要使用宏,除非事先这些宏已经制作完成,否则如果写这样的宏必然是件非常痛苦的事情。所以消息映射表的方式通常被用在Framework的实作,比如MFC等。
而虚函数的制作相当方便,所以如果不是制作Framework的话,那么这个方案也是不错的。
更进一步的讨论:允许消息横流
作为Framework的实作者,你或许还需要让消息拥有横流的机会,即流向子系统而非父类。