`
wang吖
  • 浏览: 239907 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java设计模式之动态代理-学习笔记3-1

 
阅读更多

Java5 自带动态代理接口InvocationHadler及创建代理类的Proxy类,我们可以实现该接口来完成动态代理的功能,例如现在我们可以设计一个动态代理例子:当UserDaoImpl在执行save() 方法之前进行保存日志等操作,保存结束执行其他的操作,通过代理来实现,动态代理可以实现:权限检查、做日志、检查效率、管理事务、处理异常等……,代码如下:

coding:

 

//IUserDao 接口
public interface IUserDao {

	public String save();
}


//为UserDao的具体实现类
public class UserDaoImpl implements IUserDao {

	public String save() {
		System.out.println("save ************");
		return "保存成功";
	}
}



import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
//为UserDaoImpl的代理对象
public class UserDaoImplProxy implements InvocationHandler {

	// 代理的目标对象
	private Object target;

	public UserDaoImplProxy(Object target) {
		super();
		this.target = target;
	}

	public void before() {
		System.out.println("save start ***********");
	}

	@Override
	public Object invoke(Object proxy, Method m, Object[] args)
			throws Throwable {

		// 代理对象添加对应的业务处理逻辑 加日志、检查权限*******
		before();

		// UserDaoImpl的save()方法开始执行
		Object obj = m.invoke(target, args);

		// 方法执行结束 进行清空等操作
		after();

		return obj;
	}

	public void after() {
		System.out.println("save over ************");
	}
}



import java.lang.reflect.Proxy;

//测试客户端
public class Client {

	public static void main(String[] args) {

		// 被代理对象
		IUserDao udao = new UserDaoImpl();

		// 代理对象
		IUserDao px = (IUserDao) Proxy.newProxyInstance(udao.getClass()
				.getClassLoader(), UserDaoImpl.class.getInterfaces(),
				new UserDaoImplProxy(udao));

		String sx = px.save();

		System.out.println(sx);
	}
}

 

分享到:
评论

相关推荐

    Java 版设计模式学习笔记-java-design-patterns.zip

    以上只是部分Java设计模式的概述,实际的学习笔记中可能还包括这些模式的实现示例、应用场景以及优缺点分析等,这些都是提高软件设计能力的重要资料。通过深入理解和实践这些设计模式,开发者可以编写出更加高效、可...

    图解java设计模式_学习笔记_java开发

    这份"图解java设计模式_学习笔记"是针对Java开发者深入理解和应用设计模式的重要资源。在这里,我们将深入探讨Java设计模式的核心概念、分类以及它们在实际开发中的应用。 设计模式分为三大类:创建型、结构型和...

    根据《JAVA与设计模式》整理的笔记及示例代码

    这份"根据《JAVA与设计模式》整理的笔记及示例代码"涵盖了Java语言和设计模式的核心概念,旨在帮助开发者理解和应用这些模式。 一、设计模式的基本概念 设计模式是对在特定情境下软件设计问题的解决方案的一种描述...

    图解Java设计模式笔记总结word版本.rar

    本资料“图解Java设计模式笔记总结word版本”聚焦于通过图文并茂的方式,深入浅出地解析各种设计模式。以下是基于这个主题的详细知识点讲解: 1. **设计模式的分类** - **创建型模式**:如单例(Singleton)、工厂...

    16-Java代理模式的学习笔记1

    Java代理模式是一种设计模式,它允许我们为一个对象创建一个代理,这个代理对象可以在调用原始对象的方法之前或之后执行额外的操作。代理模式在软件工程中有多种应用,例如:增加安全控制、性能监控、事务管理等。...

    计算机后端-Java-图解java设计模式笔记.zip

    本压缩包"计算机后端-Java-图解java设计模式笔记"提供了对Java设计模式的深入理解,通过图形化的方式帮助开发者更好地理解和应用这些模式。 1. **单例模式**:保证一个类只有一个实例,并提供一个全局访问点。常见...

    java学习笔记及设计模式

    Java学习笔记及设计模式是程序员进阶过程中必不可少的资源,涵盖了广泛的Java基础知识和高级概念,同时结合了设计模式这一软件工程的重要组成部分。本资源集合旨在帮助开发者深化对Java语言的理解,提升编程技能,并...

    300Java设计模式部分学习笔记

    以下是一些在尚学堂300Java设计模式部分学习笔记中涉及的设计模式的知识点: 创建型模式: 创建型模式主要解决对象创建的问题,确保系统的灵活性和封装创建细节。学习笔记中提到了5种创建型模式: 1. 单例模式...

    java语言反射与动态代理学习笔记

    ### Java语言反射与动态代理深度解析 #### 一、Java反射机制详解 Java反射机制是Java编程语言的一个强大特性,允许程序在运行时检查和修改自身结构与行为。这一机制为开发人员提供了高度的灵活性,尤其是在框架...

    java设计模式学习笔记,以及各种模式的代码实现

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可读性、可维护性和可复用性。这些模式是面向对象编程中的一种最佳实践,通过标准化的方式处理常见的设计问题。下面...

    java设计模式源码和笔记(第一部分)

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决常见问题的经验总结,能够提升代码的可读性、可维护性和复用性。本资料包“java设计模式源码和笔记(第一部分)”提供了对Java设计模式的深入理解和...

    高质量JAVA程序设计-个人学习笔记

    这份“高质量JAVA程序设计-个人学习笔记”涵盖了Java编程中的关键知识点,旨在帮助学习者提升代码质量,更好地理解和实践良好的编程习惯。 1. **面向对象编程**:Java是一种纯面向对象的语言,理解类、对象、封装、...

    Java学习笔记(源码)

    3. **异常处理**:Java的异常处理机制是其强大的特性之一,学习笔记会讲解如何使用try-catch-finally语句块来捕获和处理程序运行时可能出现的错误。 4. **集合框架**:Java集合框架是存储和操作对象的重要工具,...

    Javaq备战秋招面试题-重点学习笔记.zip

    9. **设计模式**:熟悉常见的设计模式,如单例、工厂、观察者、装饰器、代理等,能够根据实际需求选择合适的设计模式。 10. **网络编程**:了解Socket编程,理解TCP/IP协议,能编写简单的客户端和服务端程序。 11....

    Java最全学习资料+面试题+DOS命令+设计模式+Excel技巧+java学习笔记

    这份压缩包中的资源全面覆盖了Java的学习和应用,包括学习资料、面试题、DOS命令、设计模式以及Excel技巧和Java学习笔记。让我们逐一探讨这些知识点。 1. **Java学习资料**:Java学习资料通常包括基础语法、面向...

    《Java学习笔记》

    7. **高级特性**:这可能包括反射、动态代理、注解、JVM内存模型、垃圾回收机制、设计模式等。这些内容可以帮助开发者更好地理解和优化Java程序的性能。 每个PDF部分都应包含详细的实例和练习,以帮助读者巩固理论...

    Android-Java的常见集中设计模式学习笔记

    本学习笔记主要聚焦于Java中的常见设计模式,并将这些概念与Android开发实践相结合。 1. **单例模式**:在Android中,单例模式常用于创建全局唯一的对象,例如应用程序的Application类就是一个典型的单例,它在整个...

    23种设计模式学习笔记及源码

    这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...

    Spring学习笔记(13)----动态代理模式分析演示

    动态代理模式是Java编程中一种重要的设计模式,它允许我们在不修改原对象代码的情况下,为对象添加额外的功能或行为。Spring框架广泛利用了动态代理来实现依赖注入、AOP(面向切面编程)等核心功能。 首先,我们...

    java23种设计模式,3套视频加1个ppt

    Java设计模式是软件开发中的重要概念,它是一种在特定情境下解决问题的经验总结,可以提高代码的可重用性、灵活性和可维护性。23种设计模式被广泛接受并分类为三大类:创建型模式(Creational Patterns)、结构型...

Global site tag (gtag.js) - Google Analytics