以前做项目基本上是从数据库设计到web页面的制作都是一个人来做,甚至做着做着会觉得好乱的感觉.
后来是几个人一起做,开发的模式是一个人负责一部分项目的一部分,这里的分工是纵向的,即一个人要完成这一个部分内从底层一直到高层的所有开发工作.
于是,一直都在说面向接口开发,多使用接口开发 仿佛成了我们的负担,我们不知道接口有什么用,觉得累赘.

这两天看NpetShop , 看到 Persistence Service 层定义了好多个接口,这几天也一直在看设计模式,我丝毫感觉不到他定义这些接口对程序日后的维护等工作有任何的帮助,我不知道你是不是有和我同样的感觉.
但是当我们设想一下 一个团队 共同去制造生产一台电脑, 主板应该说是一个整体的框架 可是按照我们以前的开发模式就是 比如我负责生产内存 我要先把主板上面的内存插槽先生产出来,然后我再去生产内存,生产cpu也一样,必须先把主板上面的cpu插槽生产出来后才能生产cpu 因为我内存 和cpu 都要适应主板上面的插槽才行也就是我的内存和cpu都依赖与我的主板上面的插槽 所以生产的顺序必须是先主板插槽 后插槽衍生物(cpu 内存等)  最后把大家分别做的插槽 集合到一起 组成一个完整的主板  我不知道这样的比喻是不是恰当.我觉的这样开发模式应该是纵向

这样的开发模式不用我说肯定不是一个好的合作开发模式 那么如何转变这样的模式给我们代理的困境呢

于是接口就顺理成章的证明了他的存在不是多余的

我们再来说说生产电脑,在生产电脑前 我们一起分析 我们的主板应该有哪些插槽,这些插槽应该多宽 ,多长,阵脚 等等,然后我们一起去制定一个协议,然后大家都遵守这个协议,一个人专门负责生产主板,他生产的主板一定是符合这个协议的. 然后另外的人可以同时去生产cpu  和内存,生产cpu和内存不在依赖主板的插槽应该是怎么样的,因为他们知道 主板就是安装这个协议来的,所以只要按照这个协议就一定可以在主板上面使用  这似乎符合我们的一句古训叫做 "述业又专攻"

那么来想想我们的开发模式吧
系统架构师通过对系统的分析 制定一些列的接口(协议),或者是一个团队共同讨论
然后大家根据这个接口去实现自己应该实现的部分,接口中制定了我们需要用到的方法,我们就可以直接通过接口调用这些方法,使用接口的人不用去关心接口内的方法是否已经实现了 于是一个纵向的开发模式转变成了一个横向的模式,是接口给我们带来了转变

你可以去下载一个Npetshop项目看看是不是我说的这个道理 呵呵
这里我们还把 npetshop 比喻成电脑

domain 相当于我们存储在光盘里面的内容

persistence 就相当于我们的光驱

service 是不是可以理解成我们的操作系统的驱动程序呢

Presentation 我立即是我们的播放器软件

web 就是我们最终看到的画面

NpetShop 的架构图如下:

一、拥有一系列贯穿整个系统的领域模型

二、持久层完成领域对象的持久化操作,直接和数据库进行交互(通过IBatisnet进行映射)

三、服务层对持久层进行封装,进行领域对象的操作

四、表现层

五、UI界面

呵呵,就记录到这里了 以上内容讨论后为了加深印象写成,不知道会不会让人觉得乱,希望对自己的立即有帮助
有什么不妥的地方,欢迎指正

转载于:https://www.cnblogs.com/suyuan/archive/2008/04/23/1166944.html

透过NpetShop 看Web项目开发中的分工合作相关推荐

  1. uni-app看图项目开发中遇到的小问题/知识点(持续更新)

    一.若后台返回的数据带如/d的换行字符,要用<text>标签包裹 二.动态替换url中的id data(){return{ id:0, } url=`/${this.id}/` 三.分页的 ...

  2. 进行Java Web项目开发需要掌握的技术

    目前, 国内外信息化建设已经进入基于Web应用为核心的阶段, Java作为应用于网络的最好语言,前景无限看好.然而,就算用Java建造一个不是很烦琐的web应用,也不是件轻松的事情.概括一下,实施Ja ...

  3. 前后端分离的web项目开发总结(完整课设的创作过程)

    web项目开发总结 Vue的vscode环境配置及插件推荐 环境配置 vscode相关插件和环境配置 课设总结 Vue的vscode环境配置及插件推荐 环境配置 1.去官网下载安装Node.js,根据 ...

  4. MyEclipse搭建java Web项目开发环境

    MyEclipse搭建java Web项目开发环境 首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭 ...

  5. React项目开发中的数据管理

    原文链接:https://blog.csdn.net/hl582567508/article/details/76982756 redux中文文档:http://cn.redux.js.org/ Re ...

  6. 项目开发中常用JS表单取值方法

    项目开发中常用JS表单取值方法 一.常用表单基本取值方法(form1为表单名称,TextBox1为控件ID,以文本框为例,html控件与web服务器控件是一样的)         1.form1.Te ...

  7. java web开发myeclipse_【java项目实战】一步步教你使用MyEclipse搭建java Web项目开发环境(一)...

    首先,在开始搭建MyEclipse的开发环境之前,还有三步工具的安装需要完成,只要在安装配置成功之后才可以进入下面的java Web项目开发环境的搭建. 1.安装工具 第一步,下载并安装JDK,到官网 ...

  8. web项目开发人员配比_我如何找到Web开发人员的第一份工作

    web项目开发人员配比 I have always had an interest in coding for the web. I built my first site almost 15 yea ...

  9. python开发web项目_Django2:Web项目开发入门笔记(20)

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这一篇教程,我们一起来了解如何在CentOS系统中将Django2的Web项目部署到Nginx服务器. CentOS系统虽然和Ubuntu系统都是Linu ...

最新文章

  1. canvas java 上传截图_在Vue项目中使用html2canvas生成页面截图并上传
  2. pythonl_Python3 os.lchown() 方法
  3. 罗浩.ZJU | 如何看待 2020 届校招算法岗「爆炸」的情况?
  4. 利用Memcache解决数据库高并发访问的瓶颈问题
  5. 修改VIM恶心的注释自动格式化
  6. shell远程执行命令
  7. 代码重构的方法和经验_关于烂代码优化重构的几点经验
  8. (9)FPGA复位设计(第2天)
  9. python头文件库_跟老齐学Python之不要红头文件(1)
  10. 第十二章: 部署Django
  11. [数据结构复习]B树B+树
  12. 基于line2d算法的模板匹配
  13. 「2019冬令营提高组」送分题
  14. java毕业设计蔚蓝在线学习平台源码+lw文档+mybatis+系统+mysql数据库+调试
  15. Linux下内存情况分析
  16. qtcpsocket断开_QTcpSocket 对连接服务器中断的不同情况进行判定(六种情况,其中一种使用IsNetworkAlive API方法)...
  17. 风险预测模型_利用好预后预测模型,2个月发篇4分+SCI不是梦
  18. 安装pillow遇到的问题
  19. 苹果xr如何关机_苹果新系统让这些 iPhone 电量满血复活
  20. abaqus python 读取文件_ABAQUS Command 如何调用或执行 Python 脚本文件

热门文章

  1. CV方向介绍 | 基于自然语言的跨模态行人re-id的SOTA方法简述(上)
  2. 反射 数据类型_C#扫盲篇(一):反射机制情真意切的说
  3. Python面向对象介绍
  4. oracle数据库报错1033,Oracle联机日志出现错误ORA-16038 ORA-19809 ORA-00312 解决
  5. python的gc模块_Python的内存泄漏及gc模块的使用分析
  6. samba实现linux之间文件共享,使用 samba 实现文件共享
  7. J2ME J2SE J2EE
  8. DenseNet论文笔记
  9. 富文本编辑器 java_HtmlBox富文本编辑器的使用
  10. 软考信息安全工程师学习笔记目录