最近做一个项目,在项目搭建之前,花了些许时间去思考一下如何搭建一个合适的架构。一开始的构思是希望能合理的把应用的各部分进行分离,使其像金字塔一样从上往下,下层为上层提供功能。

在平常项目中,总是有很多应用级的变量,如果不合理存放,势必在项目变得越来越庞大的时候难以掌控。所以我基于这一关键点出发,定义出了第一层:配置层

基于配置层,我继承出总共5层,先把我的架构图贴上:

【系统配置层】

配置层负责存储应用内的通用变量,也就是可以在应用内多个界面或者模块中使用到的变量都会在这里预先配置,例如我会配置如下的变量:

(1)应用Application实例

(2)当前activity实例

(3)首页activity实例

(4)第三方SDK的Key

(5)当前登陆用户ID

所以在这一层我会定义出多个类进行分类存放,其中每个类都没有通信关系:

【数据存储层】

这一层通常定义一些应用内本地持久化存储的功能,因为一些小项目有时候不会要求做缓存功能,所以这一层可以为空,如果有通常我会定义一些功能如下:

(1)登陆账号存放功能,可以插入账号,然后把用过的账号列表拿出来

(2)某些功能模块的缓存,例如商品首页的数据缓存放在这里,可以无网的时候显示

(3)存放账号登陆后的一些个人信息,个人名称、手机号码等等

【系统API层】

这一层是比较重要的一层,包含了整个应用的业务逻辑功能,所以模块的功能都在这里体现,界面只是直接调用这一层的功能进行数据渲染,系统API层内部会定义很多基础功能,例如网络请求、JSON解析等待,然后封装这些功能,对外提供各种业务逻辑的实现。这一层可以根据自己的架构设计,在这一层内部进行细分,从而编写适合自己项目的内部架构。

(1)账号功能:登陆功能、忘记密码、注册帐号

(2)商品模块:获取商品列表、获取商品详情

上面的图中,ServerFace、ServerLogin就是对外提供的业务逻辑实现,封装得相当完善,下层只需要调用就可以获取想要得数据。毫不夸张的说,这一层相当于在控制台运行的APP,通过指令获取想要的数据,之后你的数据可以自由发挥渲染到界面上去。

【系统应用层】

这一层很好理解,就是应用的界面层,每一个界面都是独立,界面调用系统应用层的数据进行渲染。

这一层内,我根据自己实际需要,在BaseActivity定义了逻辑,例如Activity启动的时候,将当前实例赋值到配置层的当前启动Activity变量中。

【系统启动层】

这一层相当简单,其实就是Application实例入口,简单的项目Application内通常只有一些初始化的代码,例如将Application实例存放到配置层的变量中。

转载于:https://www.cnblogs.com/nicojerry/p/10337193.html

【架构设计】Android:配置式金字塔架构相关推荐

  1. 深入解读 MySQL 架构设计原理,剖析存储架构选型核心

    孙玄,江湖人称"玄姐",前58集团技术委员会主席,前转转二手交易平台首席架构师.今天想跟你聊点儿企业里那些年薪百万的架构师,他们的架构设计思维是如何升级的,以及他们是如何玩转 My ...

  2. 互联网架构设计漫谈 (6)-90%的架构师都知道的工作流原理

    互联网架构设计漫谈 (6)-90%的架构师都知道的工作流原理 工作流是互联网中常见的应用场景,目前国内有很多厂商提供各种各样的工作流引擎.在国际也有一些知名的工作流引擎,比如:jBPM 和 Activ ...

  3. 微服务架构设计实践系列之五:架构准备阶段

    微服务架构设计实践系列之五:架构准备阶段 原文:微服务架构设计实践系列之五:架构准备阶段 版权声明: https://blog.csdn.net/beyondself_77/article/detai ...

  4. 微服务架构设计实践之七:业务架构

    微服务架构设计实践之七:业务架构 原文:微服务架构设计实践之七:业务架构 版权声明: https://blog.csdn.net/beyondself_77/article/details/79842 ...

  5. Android MVVM + Retrofit + OkHttp + Coroutine 协程 + Room + 组件化架构的Android应用开发规范化架构

    BaseDemo 介绍 BaseDemo 是Android MVVM + Retrofit + OkHttp + Coroutine 协程 + Room + 组件化架构的Android应用开发规范化架 ...

  6. 《架构设计2.0大型分布式系统架构方法论与实践》三高笔记

    目录 前言 高并发 高并发读 动静分离与CDN加速 缓存 并发读与Pipeline 重写轻读 读写分离 批量 高并发写 数据分片 任务分片 异步化 批量 高可靠 七板斧 高可用 高可用架构几个核心问题 ...

  7. 《系统架构设计》-01-架构和架构师概述

    文章目录 1. 架构的基本定义 1.1 架构组成理论 1.1.1 系统元素 1)概念 2)静态结构和动态结构 1.1.2 基本系统属性 1.1.3 设计和发展原则 1.2 架构的决策理论 1.2.1 ...

  8. 系统架构设计:程序员向架构师转型之路-张勇-专题视频课程

    系统架构设计:程序员向架构师转型之路-247人已学习 课程介绍         本课程首先围绕普通开发人员如何向架构师转型这一课题,从架构师的角色以及转型过程中会遇到的困难及其解决方法切入展开讨论,总 ...

  9. 架构设计(1)-谈谈架构

    架构设计学习思维导图: 架构设计系列主要的ADM(架构开发方法)主要基于TOGAF9或者TOGAF9.1来论述.这是个人学习实践和总结笔记,专注并不断积累和更新,努力精进自己.个人拙见,仅供参考. 1 ...

最新文章

  1. 他,16岁辍学创业,如今已身家过亿!今年将实现飞向太空的梦想
  2. [iOS]图片高清度太高, 导致内存过大Crash
  3. 文献记录(part94)--Clustering and outlier detection using isoperimetric number of trees
  4. 简单分析KafKa工作原理
  5. php常用函数、算法,PHP常用函数和常量
  6. StoreServ的ASIC架构师必须面向未来做出决断
  7. 如何查看jsplumb.js的API文档(YUIdoc的基本使用)#华为云·寻找黑马程序员#
  8. cocos2d-x 3.X (二)创建动起来的精灵
  9. Java中一个线程只有六个状态。至于阻塞、可运行、挂起状态都是人们为了便于理解,自己加上去的。...
  10. win32开发(窗口类和窗口)
  11. 生命游戏c语言代码,c++生命游戏源码
  12. listview 中内容覆盖了屏幕底部的工具栏的解决办法
  13. 仿百度文库解决方案(一)——总体思路
  14. java struts 读取文件_读取文件.txt并将其保存到c中的struct
  15. echarts geo地图示例_Echarts地图展示及属性分析
  16. CLion配置STM32(保姆级教程)
  17. 图像入门:MATLAB图像识别
  18. 阿里P9告诉你:P6-P10到底啥区别,别再傻傻分不清?怎样才能打怪晋级?
  19. 图片编辑软件_pinta在Linux下安装
  20. Tirp(状压DP)

热门文章

  1. Express-generator
  2. ExtJs2.0学习系列(7)--Ext.FormPanel之第四式(其他组件示例篇)
  3. NLP《语言模型(一)-- 基于统计的N-Gram语言模型》
  4. 漫步最优化二——基本优化问题
  5. a recordset php,UsingCOMwithPHP(我就不翻译了)_PHP
  6. 新版JupyterLab快捷键+调试技巧(建议收藏)
  7. ffmpeg环境变量设置和安装后不能加载共享库的错误解决
  8. 天池-新闻推荐-多路召回
  9. 汇编8086CPU常用指令——详解
  10. feed流和瀑布流_基础知识讲解:什么是feed流?(图文)