Android使用动态代理搭建网络模块框架
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; } }
外部方法在执行时只需要调用代理工厂就可以根据传入的不同参数调用不同的方法,从而实现方法的统一调用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探