代理模式(静态以及动态)

代理接口:

package ProxyPattern;

public interface Italk {
public void talk(String msg);
}



RealSubject:

package ProxyPattern;

public class People implements Italk {
public String username;
public String age;

public String getName() {
return username;
}

public void setName(String name) {
this.username = name;
}

public String getAge() {
return age;
}

public void setAge(String age) {
this.age = age;
}

public People(String name1, String age1) {
this.username = name1;
this.age = age1;
}

public void talk(String msg) {
System.out.println(msg + "!你好,我是" + username + ",我年龄是" + age);
}
}


代理类:

package ProxyPattern;

public class TalkProxy implements Italk {
Italk people;

public TalkProxy(Italk people) {
this.people = people;
}

public void talkProxy(Italk people) {
this.people = people;
}

public void talk(String msg) {
people.talk(msg);
}

public void talk(String msg, String singname) {
people.talk(msg);
sing(singname);
}

private void sing(String singname) {
System.out.println("唱歌:" + singname);
}
}


测试:

package ProxyPattern;

public class MyProxyTest {

public static void main(String[] args) {

People people1 = new People("湖海散人", "18");
people1.talk("No ProXY Test");

System.out.println("-----------------------------");

TalkProxy talker = new TalkProxy(people1);
talker.talk("ProXY Test", "七里香");
}
}


[b]另外一种代理模式:
动态代理:[/b]


package Dybamic;

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


public class Handler implements InvocationHandler {

public Object targetObj;

public Handler(Object targetObj) {
this.targetObj = targetObj;
}

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

System.out.println("before the function \"" + method.getName() + "\"");
Object ret = method.invoke(targetObj, args);
System.out.println(ret);
System.out.println("after the function \"" + method.getName() + "\"");
return ret;

}



}



[b]动态代理测试:[/b]


package ProxyPattern;

package Dybamic;

import java.lang.reflect.Proxy;

public class testMain {

public static void main(String[] args) {

IUser realUser = new UserImp("sun");
Handler hand = new Handler(realUser);
IUser proxy = (IUser) Proxy.newProxyInstance(realUser.getClass()
.getClassLoader(), realUser.getClass().getInterfaces(), hand);
proxy.getName();
}

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值