钩子机制(hook)
2017-06-14 18:00
429 查看
钩子是编程惯用的一种手法,用来解决一种或多种特殊情况的处理。
简单来说,钩子就是适配器原理,或者说是表驱动原理,我们预先定义了一些钩子,在正常的代码逻辑中使用钩子去适配一些特殊的属性,样式或事件,这样可以让我们少写很多 else if 语句。
如果还是很难懂,看一个简单的例子,举例说明 hook 到底如何使用:
现在考公务员,要么靠实力,要么靠关系,但领导肯定也不会弄的那么明显,一般都是暗箱操作,这个场景用钩子实现再合理不过了。
可以看到,在中间审阅考生这个函数中,运用了很多 else if 来判断是否考生有后门关系,如果现在业务场景发生变化,又多了几名考生,那么 else if 势必越来越复杂,往后维护代码也将越来越麻烦,成本很大,那么这个时候如果使用钩子机制,该如何做呢?
可以看到,使用钩子去处理特殊情况,可以让代码的逻辑更加清晰,省去大量的条件判断,上面的钩子机制的实现方式,采用的就是表驱动方式,就是我们事先预定好一张表(俗称打表),用这张表去适配特殊情况。当然 jQuery 的 hook 是一种更为抽象的概念,在不同场景可以用不同方式实现。
看看 jQuery 里的表驱动 hook 实现,$.type 方法:
这里的 hook 只是 jQuery 大量使用钩子的冰山一角,在对 DOM 元素的操作一块,attr 、val 、prop 、css 方法大量运用了钩子,用于兼容 IE 系列下的一些怪异行为。在遇到钩子函数的时候,要结合具体情境具体分析,这些钩子相对于表驱动而言更加复杂,它们的结构大体如下,只要记住钩子的核心原则,保持代码整体逻辑的流畅性,在特殊的情境下去处理一些特殊的情况:
从某种程度上讲,钩子是一系列被设计为以你自己的代码来处理自定义值的回调函数。有了钩子,你可以将差不多任何东西保持在可控范围内。
简单来说,钩子就是适配器原理,或者说是表驱动原理,我们预先定义了一些钩子,在正常的代码逻辑中使用钩子去适配一些特殊的属性,样式或事件,这样可以让我们少写很多 else if 语句。
如果还是很难懂,看一个简单的例子,举例说明 hook 到底如何使用:
现在考公务员,要么靠实力,要么靠关系,但领导肯定也不会弄的那么明显,一般都是暗箱操作,这个场景用钩子实现再合理不过了。
看看 jQuery 里的表驱动 hook 实现,$.type 方法:
相关文章推荐
- HOOK钩子机制
- Discuz X2.0插件机制解析HOOK钩子程序
- HOOK钩子机制学习笔记(2)
- HOOK钩子机制学习笔记(1)
- HOOK钩子机制学习笔记(3)
- HOOK钩子机制学习笔记(2) - 钩子类型MSDN翻译整理
- js中的钩子机制(hook)
- 钩子(HOOK)机制的使用
- Apache Hook机制解析(上)——钩子机制的实现
- 读书笔记_windows下的混合钩子(HOOK)_part 4_使用MDL修改内存保护机制
- HOOK钩子机制学习笔记(3) - 钩子常用结构体MSDN翻译整理
- HOOK钩子机制学习笔记(1)
- Apache Hook机制解析(下)——实战:在自己的代码中使用Apache的钩子
- Git hook (钩子文件)机制
- [Delphi]钩子(HOOK)机制的使用
- HOOK钩子机制
- WordPress 插件机制的简单用法和原理(Hook 钩子)
- [转载]Windows HOOK(钩子)机制
- 钩子机制(hook)
- php中的钩子(hook插件机制)