JAVA动态代理

package vo;

public class User {
	private int id;
	private String username;
	private String password;
	
	public User(){
		System.out.println("user对象创建成功");
	}
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}



UserDao.java

package dao;

import vo.User;

public interface UserDAO {
	void insert(User user);
	
	void test();
}


TaskDao.java

package dao;

public interface TaskDAO {
	void delete(String tid);
}

TaskDaoImpl.java

package dao.imp;

import dao.TaskDAO;

public class TaskDAOIMP implements TaskDAO {

	@Override
	public void delete(String tid) {
		System.out.println("删除任务");
	}

}

UserDaoImpl:

package dao.imp;

import vo.User;
import dao.UserDAO;

public class UserDAOIMP implements UserDAO {
	
	@Override
	public void insert(User user) {
		System.out.println("UserDAOIMP的insert(user)方法被调用");
	}

	@Override
	public void test() {
		System.out.println("UserDAOIMP的test()方法被调用");
		
	}

}

Test.java

package test;

import java.lang.reflect.Proxy;

import proxy.DynaProxy;
import dao.TaskDAO;
import dao.UserDAO;
import dao.imp.TaskDAOIMP;
import dao.imp.UserDAOIMP;

public class Test {

	public static void main(String[] args) {
		
		UserDAOIMP userDAOIMP = new UserDAOIMP();
		
		UserDAO userDAO = (UserDAO)new DynaProxy().createOject(userDAOIMP);
		
		userDAO.test();
		
		System.out.println("*************************");
		
		TaskDAO taskDAO = (TaskDAO)new DynaProxy().createOject(new TaskDAOIMP());
		
		taskDAO.delete("1");
	}

}


package com.utils;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

public class DynaProxyUtils implements InvocationHandler {
	private Object target;

	/**
	 * 绑定委托对象并返回一个代理类
	 * 
	 * @param target
	 * @return
	 */
	public Object createOject(Object target) {
		this.target = target;
		// 取得代理对象
		return Proxy.newProxyInstance(target.getClass().getClassLoader(),
				target.getClass().getInterfaces(), this);
	}

	@Override
	public Object invoke(Object proxy, Method method, Object[] args)
			throws Throwable {
		// 执行方法
		Object result = method.invoke(target, args);
		return result;
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值