public interface Calculator {
public int calculate( int a , int b);
}
public class CalculatorImpl implements Calculator {
@Override
public int calculate(int a, int b) {
return a/b;
}
}
public class SomeHandler implements InvocationHandler {
// Code omitted for simplicity…..
@Override
public Object invoke(Object proxy, Method method, Object[] params) throws Throwable {
// Your complex business validation and logic
Object result = method.invoke(targetObject ,params);
return result;
}
}
public static void main(String[] args) {
CalculatorImpl calcImpl = new CalculatorImpl();
Calculator proxied = (Calculator)ProxyFactory.getProxy (Calculator.class, calcImpl,
new SomeHandler(calcImpl));
int result = proxied.calculate(20, 10);
System.out.println("FInal Result :::" + result);
}
public interface UserBean
{
void getUser();
void addUser();
void updateUser();
void deleteUser();
}
public class UserBeanImpl implements UserBean
{
private String user = null;
public UserBeanImpl()
{
}
public UserBeanImpl(String user)
{
this.user = user;
}
public String getUserName()
{
return user;
}
public void getUser()
{
System.out.println("this is getUser() method!");
}
public void setUser(String user)
{
this.user = user;
System.out.println("this is setUser() method!");
}
public void addUser()
{
System.out.println("this is addUser() method!");
}
public void updateUser()
{
System.out.println("this is updateUser() method!");
}
public void deleteUser()
{
System.out.println("this is deleteUser() method!");
}
}
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import com.cignacmc.finance.bean.UserBeanImpl;
public class UserBeanProxy implements InvocationHandler
{
private Object targetObject;
public UserBeanProxy(Object targetObject)
{
this.targetObject = targetObject;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
{
UserBeanImpl userBean = (UserBeanImpl) targetObject;
String userName = userBean.getUserName();
Object result = null;
//权限判断
if(userName != null && !"".equals(userName))
{
result = method.invoke(targetObject, args);
}
return result;
}
}
import java.lang.reflect.Proxy;
import com.cignacmc.finance.bean.UserBean;
import com.cignacmc.finance.bean.UserBeanImpl;
import com.cignacmc.finance.proxy.UserBeanProxy;
public class ProxyExe
{
public static void main(String[] args)
{
System.out.println("Proved.............");
UserBeanImpl targetObject = new UserBeanImpl("Bob Liang");
UserBeanProxy proxy = new UserBeanProxy(targetObject);
//生成代理对象
UserBean object = (UserBean)Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
targetObject.getClass().getInterfaces(), proxy);
object.addUser();
System.out.println("NO Proved.............");
targetObject = new UserBeanImpl();
proxy = new UserBeanProxy(targetObject);
//生成代理对象
object = (UserBean)Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
targetObject.getClass().getInterfaces(), proxy);
object.addUser();
}
}
Proved............. this is addUser() method! NO Proved.............
public class ClientBean
{
private String name = null;
public ClientBean()
{
}
public ClientBean(String name)
{
this.name = name;
}
public void addClient()
{
System.out.println("this is addClient() method!");
}
public void deleteClient()
{
System.out.println("this is deleteClient() method!");
}
public void getClient()
{
System.out.println("this is getClient() method!");
}
public void updateClient()
{
System.out.println("this is updateClient() method!");
}
public String getClientName()
{
return name;
}
public void setClientName(String name)
{
this.name = name;
}
}
import java.lang.reflect.Method;
import com.cignacmc.finance.bean.ClientBean;
import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;
public class CGLibProxy implements MethodInterceptor
{
private Object targetObject;
public Object createProxyObject(Object targetObject)
{
this.targetObject = targetObject;
Enhancer enhancer = new Enhancer();
enhancer.setSuperclass(this.targetObject.getClass());
enhancer.setCallback(this);
return enhancer.create();
}
public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable
{
ClientBean clientBean = (ClientBean)targetObject;
String userName = clientBean.getClientName();
Object result = null;
if(userName != null && !"".equals(userName))
{
result = method.invoke(targetObject, args);
}
return result;
}
}
import java.lang.reflect.Proxy;
import com.cignacmc.finance.bean.ClientBean;
import com.cignacmc.finance.bean.UserBean;
import com.cignacmc.finance.bean.UserBeanImpl;
import com.cignacmc.finance.proxy.CGLibProxy;
import com.cignacmc.finance.proxy.UserBeanProxy;
public class ProxyExe
{
public static void main(String[] args)
{
System.out.println(".............CGLIB Proxy....................");
System.out.println("Proved....................");
CGLibProxy cproxy = new CGLibProxy();
ClientBean clientBean = (ClientBean)cproxy.createProxyObject(new ClientBean("Bob Liang"));
clientBean.addClient();
System.out.println("NO Proved....................");
cproxy = new CGLibProxy();
clientBean = (ClientBean)cproxy.createProxyObject(new ClientBean());
clientBean.addClient();
}
}
.............CGLIB Proxy.................... Proved.................... this is addClient() method! NO Proved....................
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有