首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-10-11 
代理模式(静态以及动态)代理接口:package ProxyPatternpublic interface Italk {public void talk(String

代理模式(静态以及动态)
代理接口:

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", "七里香");}}


另外一种代理模式:
动态代理:


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;}@Overridepublic 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;}}




动态代理测试:

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();}}


















热点排行