概括:想要在调用UserSvc的所有方法时,在每个方法前或后都做一些处理,又不想修改实现类,或无法修改实现类的情况下,使用动态代理模式。
接口:
public interface UserSvc {
public void getUserInfo();
public void CreateUser();
}
实现类:
public class UserSvcImpl implements UserSvc{
@Override
public void getUserInfo() {
System.out.println("get user info.");
}
@Override
public void CreateUser() {
System.out.println("create a new user.");
}
}
动态代理类:(除了你希望的处理细节,这个类的其他地方基本不用改,直接拿来用就行了)
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class UserProxy implements InvocationHandler {
Object obj = null;
public Object bind(Object obj) {
this.obj = obj;
return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj
.getClass().getInterfaces(), this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
System.out.println("执行被代理的类的方法前,我要做一些处理。");
method.invoke(this.obj, args);
System.out.println("执行被代理的类的方法后,我还要做一些处理。");
System.out.println("");
return null;
}
}
测试类:
public class Test {
public static void main(String[] args) {
UserProxy proxy = new UserProxy();
UserSvc userSvc = (UserSvc) proxy.bind(new UserSvcImpl());
userSvc.getUserInfo();
userSvc.CreateUser();
}
}
输出结果:
执行被代理的类的方法前,我要做一些处理。
get user info.
执行被代理的类的方法后,我还要做一些处理。
执行被代理的类的方法前,我要做一些处理。
create a new user.
执行被代理的类的方法后,我还要做一些处理。
分享到:
相关推荐
**一句话概括:** 云计算让用户能够通过互联网随时获取或选购所需的资源与服务。 ### 物联网 **详细定义:** 物联网(Internet of Things, IoT)是指通过各类信息传感设备(如RFID、红外感应器、GPS等),将物理...
java资料分享概括
【标题】:一句话概括280部国学经典 【描述】:该文档提供了一句话精炼概述280部重要的中国国学经典,涵盖了十三经、其他古代文献、二十六史以及各种别杂史和野史。 【标签】:国学经典、十三经、历史文献、古代...
Java是一种广泛使用的面向对象编程语言,其核心特性包括封装、继承、多态和抽象等概念。下面是对这些关键面向对象概念的详细解释。 1. **封装**:封装是面向对象编程的基本原则之一,它指的是将数据(属性)和操作...
为了方便记忆和复习,对每个ITTO进行一句话概括,可以帮助考生快速回顾和巩固项目管理的核心概念。 例如: - 制定项目章程:确立项目、相关方和基本目标。 - 制定项目管理计划:协调所有子计划,形成文档化的项目...
一张图片概括java虚拟机的概况
在Java编程中,动态编译字符串成Java代码并将其加载到JVM(Java虚拟机)是一种高级技巧,常用于运行时代码生成、元编程或插件系统等场景。这一技术的核心在于利用Java的反射API和Java Compiler API。下面将详细阐述...
标签“一句话素材”是对压缩包内容的简洁概括,表明文件包含的都是单行式的文字素材,可能是短语、格言、诗句或者是简短的智慧语录。 压缩包内的文件“一句话素材.sql”和“一句话素材.txt”提供了这些素材的两种...
标签“java url 代理 下载图片”概括了本文讨论的主题。在实际应用中,你可能需要处理各种异常情况,例如网络连接问题、权限问题等。此外,你还可以考虑优化下载过程,比如使用多线程、缓存策略等,以提高效率和用户...
在高考试题中用一句话或规定的字数概括新闻或简讯的内容PPT学习教案.pptx
java集合面试题 全概括
- 其次寻找关键句,这可能是概括性强或具有代表性的一句话。 - 最后根据关键句总结段落大意,必要时可能需要对关键句进行适当的改造。 4. 示例练习: - 短文二(秋天景色):关键句“家乡秋天的景色可美啦!”...
Java的哲学可以概括为“一次编写,到处运行”,这得益于其运行在Java虚拟机(JVM)上的特性,使得Java程序能在任何支持JVM的平台上执行,无需重新编译。 Java语言有以下显著特点: 1. 简单:Java简化了C++的一些...
在新闻行业中,一句话新闻是一种简洁、精准的新闻摘要形式,它要求在有限的文字内概括出新闻的核心内容。南通中学的徐大宁老师分享了关于撰写一句话新闻的一些关键要点。 首先,理解新闻的基本要素至关重要。广义的...
会议的主题被概括为“通过Java的培训来带动Java软件的开发,进而促进基于Java技术的研究工作,最终达到发展生产力、获取高额利润、提高生活质量的目的”。 #### 二、会内外几大公司的动态 ##### 1. Microsoft的...
1.阐述 Java 7 和 Java 8 的区别 2.Java SE 8中最流行和最著名的最新功能是什么? 3.是什么使Java SE 8优于其他? 4.在Java SE 8中定义Lambda表达式? 5.为什么将Lambda Expression创造为代码块? 6.Lambda表达式和...
"Java学习之路:不走弯路,就是捷径"这句话,恰如其分地概括了学习Java的关键——找到正确的方法,避免不必要的困扰。 首先,理解基础是至关重要的。Java的基础包括语法、数据类型、变量、运算符、控制结构等。这些...
学习方法: 1.记笔记 2.动手写代码 3.代码需要加注释 4.不懂就问 5.上课一定要互动
第一章:Java语言基础 本章主要介绍Java语言的基本语法,包括变量、数据类型、运算符、流程控制语句(如if-else、for、while循环)以及方法的定义与调用。学生将学习如何编写简单的Java程序,并了解如何在控制台进行...
9. **动态性**:Java支持按需加载类,这意味着程序可以根据需要动态地加载必要的类,而不是一开始就加载所有类。 10. **高性能**:随着即时编译器(JIT Compiler)的发展以及先进的内存管理技术,Java程序的性能得到...