我的项目经历了三次结构性变化

第一次:单module+mvc结构。

随着项目业务的拓展,项目分包的差异化变迁以及团队人员的扩充,传统的单module方式
明显已经不再适应团队和项目了。基于这种情况,我开始着手对项目进行结构调整。
具体结构如下图:

第二次:组件化+mvp结构

根据根据业务进行组件划分,单人维护业务module,单module 运行、开发、调试;提高工作效率。
具体结构如下图

发展到现在,这个结构还能支持团队和项目需要,但是造成了分包维护的困难,对工作质量的上升也遇到了瓶颈。
基于此我进行了第三次结构设计;顺利解决了分包维护,多人开发,分包发布的困难并满足了项目和团队需要;

第三次:smv 结构

在组件化和mvp的架构思想基础上,根据实际需要,我对组件化+mvp的结构进行了一次升级。具体项目结构如图:

为了区分 组件化+mvp 的架构,我把整体架构称为:smv架构。具体解释一下具体功能:
组件化不用过多的解释了,就是对具有不同功能的业务组件进行module封装;
主要说一下smv是什么意思吧

s -> service 服务
m -> businessmodule 数据
v -> view 视图

service是基础服务;
基础服务包含:网络工具,图片工具,自定义view等其他工具;
可以支持多个业务module;

businessmodule是业务服务。
业务服务包含:具体业务功能,包含业务数据处理,业务逻辑处理;不涉及ui和交互;
可以支持多个业务分包应用;

view是视图
视图包含:各业务的ui和交互。
依赖于业务服务,可以定制多个 ui/功能差异化分包,自由组合,自由拆分。

架构重点在于两方面:businessmodule是业务服务和view是视图。

总思路

:基础服务 + 业务服务 + ui交互 + 分包组装

使用:

view层持有businessmodule依赖。
businessmodule持有service依赖
view为分包表现层。

解决问题:

1、从结构上实现ui和业务的解耦。
2、技能满足单人开发维护,也能满足多人发开维护。
3、适用于单业务分角色分包模式。
4、减小开发和维护压力。
5、方便单元测试,业务功能和ui均可单独测试。
6、使性能优化,交互优化工作更简单。
结合mvp使用demo,后续更新…

项目结构优化设计之smv架构相关推荐

  1. java项目常见业务模块,C6 架构系列——Maven多模块划分和结构

    一.传统Java Web项目 # 传统Java Web项目 这类项目常见组织方式就是在一个项目里面,放置 src\[java文件] resources\[配置文件] webapp\[js/jsp/cs ...

  2. python开发项目架构图_我的第一个python web开发框架(8)——项目结构与RESTful接口风格说明...

    PS:再次说明一下,原本不想写的太啰嗦的,可之前那个系列发布后发现,好多朋友都想马上拿到代码立即能上手开发自己的项目,对代码结构.基础常识.分类目录与文件功能结构.常用函数......等等什么都不懂, ...

  3. boot sprint 项目结构_京淘项目03 08.28

    JSP动态web资源,打war包 ##spring boot整合JSP 创建项目 spring SpringBoot整合web资源,, 在main文件下,新建webapp文件夹,,把WEBINF目录粘 ...

  4. Angularjs1.x 项目结构

    大部分的项目结构是以 directives , service, controller 为基础来搭建的项目架构的,但这里更偏向于以应用场景来进行项目架构,因此这里的目录结构可能与您之前遇到的结构不同, ...

  5. .NET Core实战项目之CMS 第十三章 开发篇-在MVC项目结构介绍及应用第三方UI

    作为后端开发的我来说,前端表示真心玩不转,你如果让我微调一个位置的样式的话还行,但是让我写一个很漂亮的后台的话,真心做不到,所以我一般会选择套用一些开源UI模板来进行系统UI的设计.那如何套用呢?今天 ...

  6. apache geode项目结构_Apache Flink-基于Java项目模板创建Flink应用(流计算和批计算)...

    Apache Flink创建模板项目有2种方式: 1. 通过Maven archetype命令创建: 2. 通过Flink 提供的Quickstart shell脚本创建: 关于Apache Flin ...

  7. 在Blazor中构建数据库应用程序——第1部分——项目结构和框架

    目录 介绍 存储库和数据库 设计理念 数据 UI 解决方案结构 界面结构 页面 路由视图 布局 表单 控件 Blazor.Database项目 Program.cs ServiceCollection ...

  8. MyBatis深入(2)-项目结构

    概述 本文的目的是让读者能对 MyBatis 的项目结构有一个简单的了解. 另外,在 http://www.mybatis.org 中提供了很不错的 MyBatis 中文文档,如果遇到一些问题可以翻阅 ...

  9. 【Lilishop商城】No2-1.确定项目结构和数据结构(用户、商品、订单、促销等模块)

    仅涉及后端,全部目录看顶部专栏,代码.文档.接口路径在: [Lilishop商城]记录一下B2B2C商城系统学习笔记~_清晨敲代码的博客-CSDN博客 首先先看一下项目的开发架构,都需要哪些技术,都按 ...

  10. 淘东电商项目(68) -互联网安全架构设计(黑名单拦截及MD5加签)

    引言 本文代码已提交至Github(版本号:d439ec96b39dc0adf0d697cbc6bfc87c1c3b7dc8),有兴趣的同学可以下载来看看:https://github.com/ylw ...

最新文章

  1. 怎样看待大学期间的代码练习
  2. python错了怎么修改密码_如何用python更改windows开机密码?
  3. c#设置图片的dpi_被忽视的鼠标设置,影响瞄准的关键因素就是它!
  4. 用为知发布博客到博客园、使用Wiz编写和发布博客园(cnblogs)博客
  5. java实验二答案天津商业大学,天津商业大学java实验报告
  6. SPSS-process插件-中介调节模型
  7. switchhost提示没有切换权限
  8. ffmpeg转码参数
  9. FPGA:生成占空比可调的PWM波
  10. Unity 制作一个网格地图生成组件
  11. 中国吸尘器产业发展前瞻与市场投资盈利分析报告2021年版
  12. 朋友圈集赞万能截图生成器微信小程序源码下载
  13. 工业互联网与物联网的区别
  14. Qt2D游戏开发引擎QtGameEngine使用入门之类功能说明
  15. img标签引入和背景图片引入雪碧图的使用
  16. 零知识证明 - bellman源码分析
  17. 基于Python实现的黑白棋强化学习模型
  18. 蓝奏云分享链接打不开的问题解决
  19. linux中'.'的作用
  20. 服务器文件管理系统破解版,Cerberus FTP Server Enterprise

热门文章

  1. 怎样使用计算机定时关机,详细教你电脑如何设置定时关机
  2. 阿里巴巴入选的JCP最高执行委员会,何方神圣?
  3. CC控制服务的设计和侦测方法综述
  4. python定义一个triangle类_Python定义一个三角形类Python学习阶段综合练习2,python,triangle,二...
  5. 如何用python来打印一个三角形
  6. Datahero inc智能合约技术重塑供应链金融模式
  7. HHKB键盘使用说明书
  8. python飞机大战概要设计_飞机大战展示.ppt
  9. 本科计算机专业考研集成电路,集成电路工程专业考研院校排名
  10. python中if elif else是什么意思_python中的elif是什么意思