`
hqman
  • 浏览: 358562 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

钩子方法 HookMethod

阅读更多
            钩子(hook)是之前开发当中经常提及的一个词,wiki 上的一个定义:HookMethod 是定义在模版类中一个方法的调用HookMethod,而此方法又可以被 模版类子类覆盖,子类可以决定具体的操作 .
 
  1. public class Algorithm {  
  2.     public void templateMethod() {  
  3.             :  
  4.             .  
  5.         hookMethod();  
  6.             .  
  7.             :  
  8.     }  
  9.   
  10.     public void hookMethod() {  
  11.         // default implementation  
  12.     }  
  13. }  
  14.   
  15. public class RefinedAlgorithm extends Algorithm {  
  16.     public void hookMethod() {  
  17.         // refined implementation  
  18.     }  
  19. }  
分享到:
评论
1 楼 wutao8818 2007-09-09  
看明白了。说的很直白,今天是从
http://exvision.iteye.com/blog/post/355213的blog上发现了你的足迹,还真能跑啊。

相关推荐

    [hook.js]通用Javascript函数钩子

    methodName[String|opt]:匿名函数需显式传入目标函数名eg:this.Begin = function(){....}; } [bool]unhook:params{ realFunc[String|must]:用于保存原始函数的函数名称,用于unHook; funcName[String|must]:被Hook...

    java钩子实现源码

    Java钩子(Hook)机制是Java虚拟机(JVM)提供的一种高级机制,允许程序员在特定的事件发生时插入自定义的行为。这个机制基于Java的动态代理和反射API,使得我们可以在程序运行时对某些行为进行拦截和处理。在Java中...

    apihook钩子截获对DLL的调用.zip

    在“apihook钩子截获对DLL的调用.zip”这个压缩包中,包含了一系列用于实现API Hook的源代码文件,如Test_Hook.clw、Test_HookDlg.cpp等,这些文件提供了具体的实现细节。 API Hook的核心概念是替换或插入代码到...

    Ruby中钩子方法的运用实例解析

    在Ruby编程语言中,钩子方法(Hook Methods)是一类特殊的方法,它们允许开发者在特定事件发生时执行自定义代码。这些事件通常涉及到类、模块或对象的生命周期,例如类的继承、模块的包含、方法的添加或删除等。钩子...

    Python-PyHooks是为了公开用于类的方法钩子

    Python-PyHooks是一个开源库,专门设计用于在Python类中实现方法钩子(Method Hooks)。这种方法钩子的概念借鉴自事件驱动编程,它允许在方法执行前后插入自定义的行为,为类的方法提供了扩展和定制的能力。PyHooks...

    java鼠标钩子实现

    在Java中,实现鼠标钩子通常涉及到使用Java的`java.awt.MouseInfo`和`java.awt.event.MouseEvent`类,以及可能的`java.lang.reflect.Method`用于钩入系统级别的事件处理。 首先,`MouseInfo`类提供了获取鼠标状态的...

    ios-iOS模板方法模式使用心得demo.zip

    3. 钩子方法(Hook Method):在抽象类中定义,但没有具体实现或提供一个默认实现。这些方法在模板方法中被调用,子类可以根据需要实现它们来改变算法的细节。 4. 模板方法(Template Method):定义了算法的基本...

    安卓手机APP钩子技术

    Java层面的hook通常涉及Method的invoke过程,通过ASM、 Dexposed或Xposed等框架,可以动态改变方法的行为。Native层的hook则涉及到Linux内核的函数调用机制,例如使用LD_PRELOAD库或者ptrace调试系统调用。 Xposed...

    全局钩子,拦截中文输入法,英文输入法,并可修改

    同时,还需要掌握输入法引擎的相关知识,了解IME(Input Method Editor)的工作原理,以便正确地处理输入事件。 此外,值得注意的是,全局钩子的使用必须谨慎,因为不恰当的实现可能会导致性能问题,甚至被恶意软件...

    ZHookLib:android dalvik的java方法钩子库

    类: 挂钩方法: public static MethodHook.Unhook hookMethod(Member hookMethod, MethodHook callback) public static Set<MethodHook> hookAllMethods(Class<?> hookClass,String methodName, MethodHook ...

    6设计模式-设计模式-homework-4组林星宇1

    `hookMethod1()` 是钩子方法,虽然在抽象类中定义,但没有具体实现,具体实现由子类覆盖;`hookMethod2()` 也是一个钩子方法,返回一个布尔值,决定是否执行 `specificMethod()`。 `HookConcreteTemplate` 是具体类...

    实例讲解Ruby中的钩子方法及对方法调用添加钩子

    在Ruby编程语言中,钩子方法(Hook Methods)是一种强大的机制,它允许程序员在特定的事件发生时执行自定义代码。这些事件可以是类的继承、对象的状态改变或者是方法的调用。通过利用钩子方法,我们可以扩展Ruby的内...

    demoSuccess.zip

    首先,钩子方法(Hook Method)是一种在程序执行流程中预留的、允许子类进行扩展或改变行为的机制。通常,父类会定义一个或多个钩子方法,但不提供具体的实现,而是留给子类去覆盖。这样,当父类在适当的时候调用...

    TemplateMethod 模式与代码重构

    模板方法中定义了整个算法的流程,包括基本步骤和钩子方法(hook method)。 2. **定义基本步骤**:在抽象类中定义抽象方法或具体方法,表示算法中的基本操作。这些方法将在模板方法中被调用。 3. **定义钩子方法**...

    模板方法设计

    4. **钩子方法(Hook Methods)**:这些是可选的操作,在模板方法中被调用,但它们在抽象类中可能没有实现或以默认行为实现。子类可以重写这些钩子方法来扩展算法。 5. **基本方法(Primitive Operations)**:这是...

    设计模式之模板方法测试代码

    2. **定义钩子方法(Hook Methods)**: 钩子方法在抽象类中声明但不实现,它们提供了一个接口供子类插入自定义行为。这些方法通常声明为虚函数,以便子类可以覆盖并实现它们。 3. **实现子类(Concrete Classes)**...

    vc++ api hook dll_whhapihook.rar

    - **VTable(Virtual Method Table)挂钩**:针对使用虚函数的类,可以更改对象的VTable来实现钩子。 在`dll_whhapihook.rar`压缩包中,可能包含了以上几种实现方式的源代码示例。通过学习这些示例,开发者可以深入...

    深入理解java虚拟机第二版源码-MethodHook:钩子java方法

    深入理解java虚拟机 第二版 ...结构体替换成新方法的结构体,那么执行原方法的时候便会执行到新方法的指令,完成了方法替换。 Andfix 中的关键代码如下: public static void addReplaceMethod(Meth

    Java设计模式之模板方法模式.rar

    同时,抽象类中定义了一些抽象方法或者钩子方法(hook method),这些方法的具体实现由各个子类根据需要进行扩展。 1. **模板方法的角色**: - **抽象类(Abstract Class)**:定义了模板方法以及一些基本操作,...

    delphi对windows高级编程的很多例子.rar_delphi api hook_delphi 钩子_屏幕_汉字输入_输入

    在Delphi中,可以利用Windows的IME(Input Method Editor)接口来处理汉字输入。例如,开发者可能创建了一个模拟输入法程序,该程序能够接收用户输入的键值,然后转换为对应的汉字,提供自定义的输入体验。 5. **...

Global site tag (gtag.js) - Google Analytics