最早学编程的时候看过一些书,印象深刻的一本书《设计模式解析》,那本书给我后来的工作提供了很大的帮助。

他叫我站在问题模型的立场上指定解决方法,也教会了我软件设计中每个问题都可以细化到到不可再分割的原子性。

在那书以后看到过一些设计模式的书出现。由于本人比较崇尚于权威或者说正统性的学术性书籍,没怎么看其他本书。

最近一些年在网上看到过一些博客中把MVC说成设计模式,这个说法是错误的,MVC实际是软件架构模式。

笔者可以毫不客气的说,工作几年以后,有一些人说MVC是设计模式,基本上是滥竽充数的程序员

因为mvc并没有设计模式中那种问题场景原型,他是一个软件架构的泛化思想模型,比如工厂模式他可以解决需求更新时频繁

维护方法代码,只要传入参数,他就给你对象,比如java中的用class.forname来装载类。

笔者读书不多,对于MVC的粗浅理解如下,供大家参考:

MVC是一种软件架构模式,他模拟人类社会分工,通过分工协作来完成一件事,完成这件事可能需要很多种工种,这里我们可以把

这些工作按角色来理解,理解成软件中的各个层。

比如一个工程项目,公司老板安排设计人员去做标书,标书做完投标,然后把工程给技术部项目经理,项目经理安排技术人员去安装,

技术人员安装好以后反馈给项目经理,项目经理向老板汇报这个标已经完成,至此一个项目结束。

这个流程中:安排、转、汇报几个词语大概反应了一个完整项目中各个角色之间交互的特点,即任务调度及分发,以及

任务结果反馈。

一个项目中如果用到了mvc架构模式,不管项目大小,按群体/角色/职责分工大概有Model层,Controller层,View层。

Model可以理解为基层,做一些苦力,基础性的工作。

Controller可以理解为管理层,他们通常负责下发命令、调度任务

View层可以理解为用户界面及用户交互层。

我们刚刚举例的工程项目中:老板、项目经理他们是Controller层,一个是下发命令,一个调度任务

其中设计部角色 以及技术人员他们是Model层,他们是做基础工作的,他们这一层有一些粗糙的接口,可以和其他角色的人

来交流反馈任务结果。

篇博客临时有点想法,算是吐槽,关于View层笔者没有想到详细的描述方式。

在软件MVC架构中,我们的Model,View,Controller层大家都能划分清楚吧,网上教程很多。

笔者的理解是,不管项目中有没有MVC框架,合理的MVC框架设计应该遵循以下原则:

M层数据持久层,负责与数据库通信,这一层包含数据模型实体类,以及一些CRUD方法。

C层主要负责调度任务,得到V层需求下发命令,最多出现的应该是把任务转发给其他类处理。

例如

DataStoreBLL dbll = new DataStoreBLL();

dbll.doSave(Entity entity){

DataStoreDAL dbal = new DataStoreDAL();

dbal.doSave(entity);

}

实际数据持久化任务通过BLL转发给DAL来处理,BLL只得到处理结果。

C层不应该出现数据库操作代码,例如jdbc的getConnection

View层负责与用户交互,展示处理结果给用户看,可以是web ui,cui,gui,app ui等

各个层之间通信应依赖于抽象(接口或者抽象类)。

MVC是架构模式,而不是设计模式的更多相关文章

  1. 介绍MVC编程架构模式

    MVC(Model/View/Controller)模式是国外用得比较多的一种框架模式,最早是在Smaltalk中出现.MVC包括三类对象. Model——是应用对象 View——是它在屏幕上的表示 ...

  2. MVC三层架构模式编程思想 JSP-Servlet-JavaBean

    MVC(Mdodel-View-Controller)编程模式.把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. watermark/2/tex ...

  3. MVC架构模式详细说明

    一.简介: 架构模式是一个通用的.可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题.架构模式与软件设计模式类似,但具有更广泛的范围. 模型-视图-控制器模式,也称为MVC模式(Mod ...

  4. 模型-视图-控制器模式(MVC模式,10种常见体系架构模式之一)

    一.简介: 架构模式是一个通用的.可重用的解决方案,用于在给定上下文中的软件体系结构中经常出现的问题.架构模式与软件设计模式类似,但具有更广泛的范围. 模型-视图-控制器模式,也称为MVC模式.是软件 ...

  5. iOS开发之--MVC 架构模式

    随着项目开发时间的增加,从刚开始那种很随意的代码风格,逐渐会改变,现在就介绍下MVC的架构模式,MVC的架构模式,从字面意思上讲,即:MVC 即 Modal View Controller(模型 视图 ...

  6. Android 四大组件 与 MVC 架构模式

    作为一个刚从JAVA转过来的Android程序员总会思考android MVC是什么样的? 首先,我们必须得说Android追寻着MVC架构,那就得先说一下MVC是个啥东西! 总体而来说MVC不能说是 ...

  7. iOS 架构模式--解密 MVC,MVP,MVVM以及VIPER架构

    本文由CocoaChina译者lynulzy(社区ID)翻译 作者:Bohdan Orlov 原文:iOS Architecture Patterns 在 iOS 中使用 MVC 架构感觉很奇怪? 迁 ...

  8. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  9. iOS - 架构模式 - 解密 MVC、MVP、MVVM、VIPER架构

    在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换? 相信你会找到以上问题的答案,如果没找到请在评论中指出. 你将要整理出你在 i ...

随机推荐

  1. Aop 中 JoinPoint等对象的用法Api

    @Aspect 定义类为切入类 @Pointcut 声明一个切入策略供 @Before @After @ Around @ AfterReturning选择 @Before 被切入方法执行前执行 @A ...

  2. Java复习 之流

    在Java程序中 对于数据的输入/输出操作以“流”方式进行:提供了各种各样的流类,用以获取各种不同的种类的数据,程序中通过标准的方法输入或输出数据 Inputstream 例子1: 但是中文会乱码 应 ...

  3. linux最大允许的文件描述符open files数nofile修改

    open file resource limit 是linux中process可以打开的文件句柄数量.增加这个数值需要调整两个配置: 第一步, 修改系统最大允许的文件描述符 查看当前的设置: $ ca ...

  4. SQL调用C# dll(第一中DLL,没使用强名称密匙,默认是 safe)

    https://msdn.microsoft.com/zh-cn/library/ms345106(es-es).aspx 1.新建项目名称SQLDllTest,类代码如下,没有用Using引用其他类 ...

  5. python基础学习 Day19 面向对象的三大特性之多态、封装

    一.课前内容回顾 继承作用:提高代码的重用性(要继承父类的子类都实现相同的方法:抽象类.接口) 继承解释:当你开始编写两个类的时候,出现了重复的代码,通过继承来简化代码,把重复的代码放在父类中. 单继 ...

  6. idea 这样 会快点

    最近使用IDEA来开发JAVA应用,对IDEA的界面很有爱,但是缺受不了它的运行速度.每次运行都要编译,所以就有了这边文章   总感觉IDEA的编译速度比eclipse慢,eclipse每次保存都自动 ...

  7. APP支付-》支付宝RSA2->支付与验签

    第一次配置支付宝,按照官网示例搞了一天,走不通.经过两天的踩坑,百度了大神的代码,支付宝终于可以了. 1:下载这是官网的最新SDK 2:配置SDK,添加命名空间 AopClient.php文件: Si ...

  8. Using Fetch

    [Using Fetch] This kind of functionality was previously achieved using XMLHttpRequest. Fetch provide ...

  9. python-ceilometerclient命令行(1)

    1.导入模块,可以动态获取模块中方法并调用,其功能与from...import...一致 2. callback = getattr(actions_module, attr) 从模块中获取方法. 调 ...

  10. 第一次登录mysql,使用任何命令都报错ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    问题: 使用临时密码登录成功后,使用任何myql命令,例如show databases;都提示下面的报错 ERROR 1820 (HY000): You must reset your passwor ...