callback(回调)与hook(钩子)机制(四)
本篇文章笔者将继续讨论callback机制的具体应用。通过上一篇的简单阐述,读者可以了解到通过对callback的深入理解和应用,可以使程序框架具有很好的可扩展性,这个意义是普遍的。比如组件的事件模型,ajax的回调,服务器框架回调模型等等。这里只略举几个示例以帮助大家对其具体应用的理解。
服务处理框架:比如我们使用php对外提供服务,且不论apache、lighttpd内部回调设计的精妙,只从php框架角度来看回调的简略应用吧。
框架处理程序:
#callback_func.inc.php
#回调配置文件
final class callback_func
{
static $ARR_PRE_GET_INPUT_CALLBACK = null;
static $ARR_AFTER_GET_INPUT_CALLBACK = null;
static $ARR_PRE_DO_WORK_CALLBACK = null;
static $ARR_AFTER_DO_WORK_CALLBACK = null;
}
#end conf file
#frame.inc.php
function _main()
{
foreach (callback_func::$ARR_PRE_GET_INPUT_CALLBACK as $func_name) {
if (func_exists($func_name)) {
call_user_func($func_name);
//or require_once ($func_name);
}
}
get_input();
foreach (callback_func::$ARR_AFTER_GET_INPUT_CALLBACK as $func_name) {
if (func_exists($func_name)) {
call_user_func($func_name);
//or require_once ($func_name);
}
}
……..
}
_main();
//end of file
通过这里简单的框架介绍,读者可以看出用户程序可做成配置的,然后由框架回设来完成具体功能。这对于通过框架来实现多人协作是十分有益的。开发者可以根据自已负责数据处理的时段,在对应的callback程序数组内添加自已对应的函数就可以完成,这种实现可扩展性明显十分灵活的。
在下面我们继续使用示例来说明callback思想的应用。ajax实现流览器服务器间的回调。
当用户使用浏览器来浏览网页的时候,前台会对应执行一些js片断。我们做这样一个假想:如果服务器就像当于我们理解的callback的对外提供者,是不是前台写一段js函数,可通过后台回调此js呢?答案是成立的。后台可以界定哪个命令号对外提供哪些数据,前台则负责具体的样式展现,这对于系统开发的分层结构是十分有利的。这一块google做的是十分不错的,大家可以多多参阅。笔者不做太多说明了。
实现这些callback技术应用是十分普遍的,比如eclipse的开源框架等,无不蕴含着这些道理。当然,它有很好的基类的反射支持,对于具有元数据描述的组件来讲,这种回调进行底层可扩展性框架开发,是再好不过的了。
If you enjoyed this post, make sure you subscribe to my RSS feed!









No Comments, Comment or Ping
Reply to “callback(回调)与hook(钩子)机制(四)”
You must be logged in to post a comment.