mvc设计模式把应用分为三层,M(模型层)主要负责处理业务模型,V(视图层)负责数据的显示,C(控制层)转发请求,对请求进行处理 #### 试想以下的一些业务场景: - 发送邮件,调用外部api等 - 一些业务逻辑,比如:结算页面的一些金额的计算等 - 对某个数据做格式化的显示处理(如:订单状态数字表示转化为中文表示) - 根据用户显示不同的数据 - 根据需求判断是否显示某些数据 ![](https://xingxing-blog.oss-cn-shanghai.aliyuncs.com/markdown/20191016-005459-597.png) #### 分别将他们放在mvc的哪层? ------------ 一般,会把他们都放入controller中,随着项目增大,contrller会变得非常臃肿,这时你想把他们搬到model中,但是仅仅是换了个地方而已,问题没有被解决。 #### 别将我们的思维局限在mvc ------------ ![](https://xingxing-blog.oss-cn-shanghai.aliyuncs.com/markdown/20191016-005522-523.png) *** 多层mvc模式 *** 如上图所示,在mvc的基础上把model层拆分成dataModel (数据模型层)、logicModel(逻辑模型层)、serviceModel(服务模型层)。dataModel负责数据的读写也就是纯粹的CURD,logicModel负责业务逻辑,SericeModel负责服务类型逻辑。拆分后的Model层变的更加清晰,面对一些视图简单的应用可以做到很好的分层。 #### repository+presenter+service 模式(重点) ------------ ![](https://xingxing-blog.oss-cn-shanghai.aliyuncs.com/markdown/20191016-005539-934.png) - Model 封装了数据库的对象 - Respository 资源库,它将负责所有数据库获取数据的操作 - Service 一些商业逻辑 - Controller 接收请求,发送请求 - Presenter 辅助view,处理一些显示逻辑 - View 负责视图展示 其中橙色模块通过依赖注入到,mvc的三个层中,所以我们发现mvc还在。 1. 我们将数据操作提取出来,由Respository辅助Model 2. 我们将业务逻辑提取出来,由Service辅助Controller 3. 我们将显示逻辑提取出来,由Presenter辅助View
上一篇:我的个人博客开始了 下一篇:使用laravel服务容器的优势
如果这篇文章帮助到了您,可以赞助下主机费~~
赞赏