`
vortexchoo
  • 浏览: 66045 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java回调(钩子函数)笔记(思想)

    博客分类:
  • java
 
阅读更多

Java回调(钩子函数):

拥有某些接口,但不关心实现,具体如何实现不详。

由实现类自己决定,相当于对外抛出一个钩子,你在上面挂什么就是什么。

 

具体看代码:

接口中有一个方法,传入一个字符串,实现类可以用传入的字符串做任何事情。只要传就行。

 

public interface HookInterface {
	
	public void whatever(String string);
	
}

 

 

 

A实现类

 

public class AImpl implements HookInterface {

	@Override
	public void whatever(String string) {
		// TODO Auto-generated method stub
		System.out.println("I am a good guy.My name is "+string);
	}

}

 A实现了hook接口,A将这个接口实现后,做了自我介绍。

 

 

 

B实现类

public class BImpl implements HookInterface {

	@Override
	public void whatever(String string) {
		// TODO Auto-generated method stub
		System.out.println("I hate "+string);
	}

}

 B表达了对传入字符串(人名?事务?)的不满。

 

就是这样的思想,我们可以继续。

这样的实现类有N多个,我们就可以做一个公共的方法。改在BImpl类,这个方法有自己的代码,唯有一处是要调用hookinterface接口的whatever方法的,这个方法同样,传什么样的hookInterface实现类就调什么样的方法。

public class BImpl {
	
	String implHook(HookInterface hi,String string){
		String myCode = "My 'hello world'!";
		hi.whatever(string);
		return myCode+"-"+string;
	}
	
	
}

 

 

 

测试代码:

 

	public static void main(String[] args) {
		
		/**
		 * A的实现
		 */
		HookInterface hi = new AImpl();
		String res = new BImpl().implHook(hi, "A");
		System.out.println(res);
		
		
//		String res = new BImpl().implHook(new HookInterface(){
//
//			@Override
//			public void whatever(String string) {
//				// 利用匿名类,写自己的实现
//				System.out.println("I'm "+string);
//			}
//			
//		}, "B");
//		
//		System.out.println(res);
		
	}

 

 

分享到:
评论

相关推荐

    回调函数以及钩子函数的概念

    回调函数和钩子函数概述 回调函数和钩子函数是编程中常用的技术概念,下面我们将详细地介绍它们的概念、定义、特点和使用方法。 一、回调函数 回调函数是一个函数,它不能被显式调用,而是将其地址作为参数传递给...

    C++回调函数详解

    我们经常在C++设计时通过使用回调函数可以使有些应用(如定时器事件回调处理、用回调函数记录某操作进度等)变得非常方便和符合逻辑,那么它的内在机制如何呢,怎么定义呢?它和其它函数(比如钩子函数)有何不同呢?...

    简单的钩子函数

    钩子函数的基本工作原理是注册一个回调函数到系统或特定进程,当指定的事件发生时,系统会调用这个函数,而不是默认的行为。这样,开发者可以通过编写自己的逻辑来扩展或替换原生功能。 在Windows API中,钩子分为...

    C++回调函数.pdf////C++回调函数.pdfC++回调函数.pdf

    回调函数的基本思想是将一个函数作为参数传递给另一个函数,然后在适当的时机调用这个传递进来的函数。这种方式在处理事件驱动编程时尤为常见,因为它提供了一种灵活的方式来响应特定事件。 **定义回调函数的一般...

    dephi钩子函数实例源码

    5. **钩子回调函数**:当钩子被触发时,Windows会调用你设定的回调函数。这个函数需要处理各种事件参数,如键盘的虚拟键码或鼠标的按钮状态。你可以在这个函数中添加代码来记录、修改或过滤事件。 6. **卸载钩子**...

    钩子函数的使用.pdf

    钩子函数的使用 钩子函数是 Windows 操作系统中的一种事件处理机制,它允许开发者在事件到达应用程序前拦截和处理事件。钩子函数可以分为两类:特定线程钩子和全局系统钩子。特定线程钩子只监视指定的线程,而全局...

    回调函数详解

    - **钩子函数**: 特指与`SetWindowsHookEx`函数一起使用的回调函数,用于监控和拦截Windows消息。 钩子函数是回调函数的一个特殊例子,通常用于监控特定类型的事件,比如键盘输入或鼠标点击。 #### 四、回调函数与...

    利用钩子函数,截获任何弹出的消息框MessageBox

    钩子函数是Windows编程中的一种回调函数,当特定的事件(如键盘输入、鼠标点击或特定API调用)发生时,Windows会调用这个函数。根据钩子类型的不同,可以拦截各种事件。常见的钩子类型有: - **WH_KEYBOARD**: 键盘...

    钩子函数代码 VC的必经之路

    通过分析和运行这些代码,开发者可以直观地了解钩子函数的设置和回调过程。 在VC中使用钩子,首先要了解不同类型的钩子,包括WH_KEYBOARD(键盘钩子)、WH_MOUSE(鼠标钩子)、WH_GETMESSAGE(消息队列钩子)等。每...

    基于WPF开发的钩子函数,实现了勾取键盘所有输入,同时实现了对指定案件的屏蔽或替换。

    首先,我们需要定义一个全局变量来保存钩子句柄,并实现一个回调函数,该函数会在每次键盘事件发生时被调用。在回调函数中,检查按键代码并决定是否让事件继续传递。如果要屏蔽某个键,简单地返回TRUE即可阻止其处理...

    钩子函数屏蔽鼠标键盘

    3. **处理钩子回调**:在钩子函数中,我们需要检查消息类型,如果是键盘或鼠标事件,根据需求决定是否屏蔽。如果事件与登录界面无关,可以返回FALSE阻止其进一步传播;否则,处理事件后返回TRUE。 4. **覆盖桌面**...

    dll与钩子函数的初步学习

    在Windows编程领域,DLL(Dynamic Link Library)和钩子函数是两个非常重要的概念,它们各自在不同的场景下发挥着关键作用。这篇文档将详细介绍这两个知识点,并通过提供的压缩包文件进行深入探讨。 首先,DLL是一...

    vb 钩子函数用法实例适用于新手

    钩子类型可以是键盘钩子(WH_KEYBOARD)、鼠标钩子(WH_MOUSE)等,处理程序则是一个回调函数,用于处理捕获到的事件。 以下是一个简单的VB钩子函数实例: ```vb Private Declare Function SetWindowsHook Lib ...

    c++钩子函数:copy hook_linux函数hook

    在IT领域,钩子函数(Hook Function)是一种高级技术,常用于系统监控、调试和拦截特定事件。在C++编程中,我们可以利用钩子来跟踪和控制程序的行为,例如在这个场景下,我们关注的是文件复制操作。"copy hook"特指...

    钩子函数调用实例

    2. **编写钩子函数**:钩子函数是当指定事件发生时被调用的回调函数。在我们的例子中,当检测到HCBT_MONITORCHANGE时,我们需要记录桌面图标的当前位置。这通常通过遍历所有桌面图标,获取它们的坐标,并存储到一个...

    VC++钩子函数

    // 键盘钩子回调函数 LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { GetKeyboardLayoutName(str); return false; // 这行代码应该是冗余的,应删除 return CallNextHookEx(g_h...

    利用钩子函数键盘鼠标键盘事件

    3. **钩子回调的同步**:钩子函数应该尽可能快速地执行,因为它们是线程阻塞的,长时间运行可能导致应用程序无响应。如果需要进行复杂处理,应考虑异步操作。 4. **权限和权限问题**:由于涉及到系统级别的操作,...

Global site tag (gtag.js) - Google Analytics