美团安卓端采用了多种架构模式和技术框架【偏题】
MVP架构
MVP是美团安卓端架构中的重要组成部分,它将应用分为Model、View、Presenter三个部分. Model负责业务逻辑和数据管理,比如数据的存储、查询、处理等;View负责界面展示和用户交互,像Activity、Fragment等都属于View层;Presenter则作为桥梁,负责处理业务逻辑和数据传递,它从Model获取数据并传递给View展示. 这样的分离使得各层职责明确,易于维护和测试,例如在进行界面修改时,只需关注View层,而不会影响到其他层的逻辑.
平台化架构
美团外卖安卓客户端采用了平台层、业务层和宿主层的平台化架构 。平台层承载上层的数据通信和页面跳转,提供外卖核心服务,如商品管理、订单管理、购物车管理等,还提供配置管理服务以及统一的基础设施能力,包括网络、图片、监控、报警、定位、分享、热修、埋点、Crash上报等,另外也涵盖了生命周期管理、组件化等其他管理能力;业务层包括外卖业务和垂直业务;宿主层则有Waimai App壳和美团外卖频道Waimai-channel壳,主要用于Application的初始化、dex加载和其他必要组件或基础库的初始化.
网络架构
在网络请求方面,美团安卓端主要使用Retrofit库 。通过定义接口和注解的方式来描述和处理网络请求,简化了网络请求的编写和管理。比如,定义一个ApiService接口,在其中使用@GET等注解来描述具体的网络请求方法,然后利用Retrofit创建该接口的实例,进而发起网络请求.
图片加载架构
图片加载主要依靠Glide库,它能够高效地加载、缓存和显示图片。使用时,通过简单的链式调用,如Glide.with(context).load(imageUrl).into(imageView),即可实现图片的加载和显示,并且能自动处理图片的缓存,提升图片加载的性能和效率.
异步操作与事件处理架构
美团安卓端广泛应用RxJava来处理异步操作和事件流 。它基于可观察序列的概念,以函数式编程的方式来处理数据流和变换,能够方便地处理异步任务的订阅、取消,以及对数据的变换、过滤等操作,使得异步代码更加简洁、易读和易于维护.
通信架构
在架构中提供了scheme路由和美团自建的ServiceLoaders sdk两种平级间的通信方式. scheme路由利用Android的scheme原理进行通信,而ServiceLoader则是利用Java反射机制来实现通信,以此满足同层业务库之间在不打破层级边界的情况下进行通信的需求,比如页面的跳转、基本数据类型的传递、模块内部自定义方法和类的调用等.