0 0

分包是模块优先还是层优先?0

举个简单例子,com.公司名.项目名称.下一层的包就应该是

1.层优先的话:
com.xxx.xxx.action
com.xxx.xxx.service
com.xxx.xxx.dao

2.模块优先的话:
com.xxx.xxx.user
com.xxx.xxx.card
com.xxx.xxx.person

一般来讲,应该如何划分?如果是模块优先的话,那不属于任何一个模块的filter和util应该放在什么地方?
2013年8月14日 10:10

5个答案 按时间排序 按投票排序

1 0

看到你的问题,顺便说下自己的想法吧。
模块划分,还是层级划分,要考虑一些客观情况,如下:
1、如果涉及团队协作开发,建议按模块划分。因为业务模块之间的耦合性相对于层级的耦合性要低,这样程序员在开发模块时,基本上要开发action、service、orm,这样开发的接触面比较全,而且基本上不需要与其它模块进行交互,减少沟通交流时间,能提高开发效率。如果按照层级划分,那么多人开发时,会存在action依赖service,而service由别人开发,会涉及到交流、沟通(如:action需要的业务方法,需要先告诉service开发人员……等等若干情况)

2、如果独立开发,只要结构清晰,后期维护方便,怎么划分都可以。

目前我经常遇到的结构如下(base名称可以换为core、frameword均可以,看习惯了):
com.公司名.项目名称.base(基础模块顶级包)
com.公司名.项目名称.base.security(安全相关)
com.公司名.项目名称.base.remote(远程服务相关)
com.公司名.项目名称.base.config(配置相关,提供业务模块配置信息)
com.公司名.项目名称.base.web(web相关,提供通用的拦截器、监听器、标签等等)
com.公司名.项目名称.base.utils(工具包)

下面这个module是比较大的模块,可以在module中继续细分
com.公司名.项目名称.modules.module1
com.公司名.项目名称.modules.module2
com.公司名.项目名称.modules.module3

这样的包结构,对于20左右的开发团队来说,目前感觉还不错,仅供参考。

2013年8月14日 10:27
0 0

如果项目比较大,最好先做好功能模块的划分,这样各模块耦合度降低,有利于不同的开发组或人员分工协作。
但是各模块内部还必须分好层,否则就会一团糟。也就是说模块的划分是显式的,一目了然的,而层的划分则是隐式的。

当然,在功能模块之外,应该还有公共基础模块,你说的那些filter和util等就放在这里。

2013年8月14日 14:33
0 0

不仅仅要看如何能够更加良好的协作。还要看看未来的部署方式。如果有可能分层部署。则层为大。如果是准备模块独立部署。则模块为大。

绝大部分目前都是模块为大。再分层。这样也符合分而治之的思路

2013年8月14日 13:02
0 0

一般情况下,稍微大点的工程,需要把模块进行拆分子工程,就是另外再生成一个模块,然后按照1的方式,工程之间进行依赖
若是不想划分子模块工程的话,2的方式稍微更加合理点。

但是这个都不一定,主要是看当初搭建架构的时候进行约定。

2013年8月14日 10:16
0 0

一个架构的雏形 :
先按照各个层来区分 就是典型的MVC 三层,

先创建好:controller
         service
         model

然后在创建你需要的工具类
        common
        filter
        interceptor

最后根据你的模块 去扩充

        controller.XXX功能
         service.XXX功能
         model 可以把model 统一放着里


2013年8月14日 10:15

相关推荐

    小程序使用分包的示例代码

    小程序分包是微信小程序开发中的一项重要技术,它允许开发者将小程序按功能模块拆分成不同的子包,在构建时打包成不同的分包。用户在使用时按需加载这些分包,可以有效优化小程序的加载速度和性能。接下来,我们来...

    系统架构设计师模拟试题8.doc

    1. 在客户机/服务器系统开发中,分布式数据和应用结构(C)意味着数据层和数据处理层位于服务器,而应用逻辑层、表示逻辑层和表示层则位于客户机。这种结构使得客户端可以处理用户交互,而服务器则负责数据管理和...

    网络游戏-机会网络环境下基于优先级和多粒度的内容共享方法.zip

    它不仅可以降低由于网络延迟或丢包导致的游戏卡顿和中断,还可以在有限的网络资源下,优先保证关键游戏数据的传输,从而提高玩家满意度。此外,多粒度的内容共享还能减少不必要的数据传输,节省用户流量,同时减轻...

    (完整word)(完整word版)数据可视化智能软件主要性能指标.doc

    软件具有较强的数据读写能力,支持批量下置功能,支持写优先的策略,保证现场工况突发事件及时处理。软件支持传输数据块的自动与手动分包,支持“数据块”的读取与转发。根据具体协议要求,通讯性能可支持访问速度达...

    android 360°全方面性能调优.pdf

    - **单一职责原则**:每个类或模块应仅有一个引起其变化的原因,避免功能混合。 - **里氏替换原则**:子类对象应当能够替换其父类对象而不影响程序的正确性。 - **依赖倒转原则**:依赖于抽象而非具体实现,提高...

    面向智能相机的远程异步图像数据处理服务.pdf

    在图像通信实现的过程中,智能相机通过自定义协议分包发送数据,服务器端会判断是否收到合法数据,并进行相应处理。 在实现中,自定义协议的每个数据包通常包含标识、版本号、包序号、发出时间、包类型、数据长度、...

    RouterOS2.9.6.with.crack及配置动画

    MikroTik RouterOS是一种路由操作系统,并通过该软件将标准的PC电脑变成专业...Winbox是一个可视化的路由器管理工作,目前版本也有中文版的,但大多数routeros管理者因为使用习惯的原因还是比较喜欢使英文版的Winbox。

    ColorOS适配教程

    - **接近度**:优先考虑与Google源码接近的ROM包,因为它们通常更容易被修改和定制。 - **功能完整性**:选择功能完善的ROM包,确保最终适配后的系统具备所有必要的功能。 ColorOS提供了两种基础版本:一种基于...

    前端打包性能优化

    本文将详细介绍如何进行前端打包优化,主要包括查看打包文件、使用GZIP压缩、拆分包、共用npm依赖以及优化配置。 首先,查看打包后的文件大小至关重要,因为这可以帮助我们了解哪些模块占用了大量空间。通常,我们...

    client-side-learning-resources:精选的教程,观点和视频集合,用于学习客户端开发

    - Webpack:模块打包工具,处理JavaScript、CSS、图片等资源,优化代码分包、压缩和加载性能。 - Babel:将ES6+新特性转换为兼容旧版本浏览器的JavaScript代码。 - Gulp和Grunt:自动化任务运行器,用于编译、...

    网管教程 从入门到精通软件篇.txt

    Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...

Global site tag (gtag.js) - Google Analytics