Java基础之代理模式
来源:互联网 发布:淘宝卡 哪个好 编辑:程序博客网 时间:2024/06/11 04:47
Java中代理模式是使用比较广泛的一个模式;下面,我们来用一个VPN上网的一个简单例子来说明一下吧!
/*============================ * 代理模式:----常用的设计模式 * *============================*/interface NetWork{public void browse();}class Real implements NetWork{//定义接口标准public void browse(){System.out.println("Real ...Operation");}};class Proxy implements NetWork{//代理中调用真实的服务private NetWork netWork;public Proxy(NetWork network){this.netWork=network;}//检查用户名public void check(){System.out.println("do check u passwd username");}public void browse(){this.check();//验证this.netWork.browse();//真实的操作}};public class ProxyDemo6 {//客户端调用代理服务 public static void main(String[] args){ NetWork net=null; net=new Proxy(new Real());//指定代理操作 net.browse(); }}
代理服务中,我们主要是解决核心业务外的功能,比如登录的验证,加密等操作;核心业务是代理业务中的一环;采用这种模式最经典的就是登录;
动态代理
/**=========================== * 动态代理Demo * *==========================*/package demoRefle0001;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * 实现接口 * @author R * */interface Subject {public String say(String name,int age);//定义say接口}class RealSubject implements Subject{ public String say(String name,int age){ return "姓名: "+name+"年龄:"+age; } }/** * 动态代理 * @author R * */class MyInvocationHandler implements InvocationHandler{ private Object obj; /* * 代理要 绑定的类 */ public Object bind(Object obj){ this.obj=obj;//真实主题类 System.out.println("1 这里是代理调用"); return Proxy.newProxyInstance(obj.getClass().getClassLoader(), obj.getClass().getInterfaces(), this); } /** *Object proxy 代理对象 *Method method 代理方法 *object[] args 方法参数 */@Overridepublic Object invoke(Object proxy, Method method, Object[] args)throws Throwable {System.out.println("2 这里是代理调用");Object temp = method.invoke(this.obj, args);//获取调用方法 和参数return temp ;}}public class DemoDymProxy { public static void main(String[] args){ //绑定代理 Subject sub=(Subject)new MyInvocationHandler().bind(new RealSubject()); System.out.println("0 这里是代理调用"); String info = sub.say("李兴华",30) ;//调用代理invoke方法 System.out.println(info) ; }}
0 0
- Java基础之代理模式
- 代理模式之基础
- Java设计模式之代理模式(基础篇)
- Java代理之代理模式
- Java基础之-代理
- Java 之代理模式
- java 之代理模式
- java之代理模式
- java之代理模式
- java之代理模式
- Java之代理模式
- java之代理模式
- Java设计模式之代理模式(动态代理-基础篇)
- java模式之代理模式
- 【JAVA】代理模式之Java动态代理
- java 代理模式之 静态代理
- 代理模式之Java动态代理
- java 代理模式详解之静态代理
- AsyncHttpClient, RequestParams ,AsyncHttpResponseHandler三个类使用方法
- 关于 No Spring WebApplicationInitializer types detected on classpath卡死的解决办法
- CSS3——gradient渐变
- Min Stack
- Java 日志缓存机制的实现
- Java基础之代理模式
- uploadify(jquery)插件的使用及图片上传预览
- linux 常用命令
- yum源配置
- cin.tie(NULL)--加速
- 应用系统之间数据传输的几种方式
- Java 语言中 Enum 类型的使用介绍
- html基础简介
- 黑马程序员—Java集合框架及Java中的几个工具类