- 接口
public interface PersonBean {
String getName();
int getAge();
void setName(String name);
void setAge(int age);
}
2.实现接口
public class PersonImpl implements PersonBean{
String name;
int age;
public PersonImpl(String name,int age) {
// TODO Auto-generated constructor stub
this.name=name;
this.age=age;
}
@Override
public String getName() {
// TODO Auto-generated method stub
return name;
}
@Override
public int getAge() {
// TODO Auto-generated method stub
return age;
}
@Override
public void setName(String name) {
// TODO Auto-generated method stub
this.name=name;
}
@Override
public void setAge(int age) {
// TODO Auto-generated method stub
this.age=age;
}
}
3.实现InvocationHandler
public class OwnInvocationHander implements InvocationHandler {
PersonBean per;
public OwnInvocationHander(PersonBean per) {
// TODO Auto-generated constructor stub
this.per=per;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
// TODO Auto-generated method stub
//控制方法调用
try {
if (method.getName().startsWith("get")) {
System.out.println("success");
return method.invoke(per, args);
}else if (method.getName().startsWith("set")) {
return method.invoke(per, args);
}
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
}
4.创建动态代理类
public class CreateProxy {
public static PersonBean getPersonBean(PersonBean per) {
return (PersonBean) Proxy.newProxyInstance(
per.getClass().getClassLoader(),
per.getClass().getInterfaces(),
new OwnInvocationHander(per));
}
}
5.测试类
public class TestProxy {
public static void main(String[] args) {
// TODO Auto-generated method stub
PersonBean per=new PersonImpl("lei", 20);
PersonBean ownser=CreateProxy.getPersonBean(per);
ownser.setAge(22);
System.out.println(ownser.getAge());
}
}