博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android使用动态代理搭建网络模块框架
阅读量:6688 次
发布时间:2019-06-25

本文共 2117 字,大约阅读时间需要 7 分钟。

1.Java中的动态代理相信大多数朋友都接触过,在此就不再赘述,如果有不明白的朋友,可以到网上搜一下(一搜一大堆,呵呵。。)

2.本节主要阐述一下如何使用动态代理框架实现Android应用的瘦身开发。

假设把Android网络客户端访问服务器的接口抽象成为一个统一的接口,例如:

public interface AppNetWorkInter{        public Object execute(Object... objs)     }

所有关于网络访问的接口都实现此接口,例如:登录,注册,编辑/查看个人资料等,下面以登录(其他网络访问类都集成该统一接口)为例:

public class LoginModel implements AppNetWorkInter{    override    public Object execute(Object...objs)    {        //在该方法中实现登录接口所需要的操作    }}

动态代理类(主要作用是返回代理对象):

public AppNetWorkProxy implements InvocationHandler{    private Object target;    /**     * 委托对象并返回一个代理类     *      * @param target     * @return     */    public Object bind(Object target) {        this.target = target;        // 取得代理对象        return Proxy.newProxyInstance(target.getClass().getClassLoader(),                target.getClass().getInterfaces(), this);    }    @Override    public Object invoke(Object proxy, Method method, Object[] args)            throws Throwable {        Object result = null;        System.out.println("Game Start!");        result = method.invoke(target, args);        System.out.println("Game Over!");        return result;    }}

下面搞一个动态代理工厂处理代理的类

package com.yw.proxy;/** * 动态代理工厂 * @author yw-tony * */public class ProxyFactory1 {    private ProxyFactory1(){}    private static ProxyFactory1 instance = null;    public static ProxyFactory1 getInstance(){        if(instance == null){            synchronized (ProxyFactory1.class) {                if(instance == null){                    instance = new ProxyFactory1();                }            }        }        return instance;    }    /**     * 根据传入的参数不同执行不同的操作     * @param inter     */    public Object execute(GameInter inter,Object...objs){        GameProxy proxy = null;        GameInter game = null;        Object obj = null;        try{            proxy = new GameProxy();            game = (GameInter)proxy.bind(inter);            obj = game.execute(objs);        }catch(Exception e){            e.printStackTrace();        }        return obj;    }}

外部方法在执行时只需要调用代理工厂就可以根据传入的不同参数调用不同的方法,从而实现方法的统一调用。

 

转载于:https://www.cnblogs.com/tony-yang-flutter/p/3457431.html

你可能感兴趣的文章
Docker 修改docker容器内部时间
查看>>
解决windows下redis狂占C盘内存
查看>>
yii2高级模板添加新增模块
查看>>
【推荐】(SqlServer)不公开存储过程sp_Msforeachtable与sp_Msforeachdb详解
查看>>
TURBOGATE邮件网关——最经济高效的企业网关选择
查看>>
MS14-058 最新提权神器
查看>>
数据挖掘算法(Analysis Services – 数据挖掘)
查看>>
Apache配置详解(最好的APACHE配置教程)
查看>>
CentOS 7 下基于基 bitnami 安装部署 redmine
查看>>
linux ubuntu apt-get 更换源
查看>>
【Web探索之旅】第二部分第三课:框架和内容管理系统
查看>>
Javascript中公有成员,私有成员,静态成员
查看>>
DB2-内存的使用
查看>>
第四、五章解决队列和串的编程问题
查看>>
包失效,无法编译
查看>>
linux 配置全用户的环境变量,profile.d文件的作用
查看>>
linux邮件服务器配置
查看>>
HTML5学习笔记(二)——表单1
查看>>
docker笔记
查看>>
三层交换机与路由器的相关配置
查看>>