import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
// 定义一个抽象类,包含钩子方法
abstract class DataFetcher {
// 模板方法
public final void fetchData(String urlString) {
String data = performNetworkRequest(urlString);
onDataReceived(data); // 钩子方法
}
// 执行网络请求
private String performNetworkRequest(String urlString) {
StringBuilder response = new StringBuilder();
try {
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
// 读取响应
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
return "请求失败";
}
return response.toString();
}
// 钩子方法,允许子类自定义数据处理
protected abstract void onDataReceived(String data);
}
// 实现具体的监听类
class MyDataListener extends DataFetcher {
@Override
protected void onDataReceived(String data) {
// 自定义数据处理逻辑
System.out.println("处理收到的数据: " + data);
}
}
// 主类
public class HookExample {
public static void main(String[] args) {
DataFetcher fetcher = new MyDataListener();
String url = "https://jsonplaceholder.typicode.com/posts/1"; // 示例API
fetcher.fetchData(url); // 触发数据获取
}
}
使用HOOK实现监听
最新推荐文章于 2024-10-03 09:00:56 发布