我们在进行软件开发的时候,以前貌似就是类似于“摊大饼”式的软件架构。一个中心,其余的功能模块和逻辑代码就围绕这个主线程(或者主程序)展开,最终随着功能的越来越多,程序越来越繁杂,变得难以维护。慢慢的,MVC于是就随着软件结构设计的发展应运而生,因此,MVC其实就是软件架构模式,并非软件设计模式。
1 . 那么,软件架构模式和软件设计模式到底有什么不同呢?
其实说白了,软件架构模式是一种战略性的软件模式,是在宏观层面,而软件设计模式是一种战术性的软件模式,是在微观层面(或者是代码层面)。
在进行软件开发的时候,项目经理需要仔细分析“需求”,根据需求进行提取、求精,加之对于人员的把控等因素 ··· 转换为甘特图,而架构师呢,需要将这些提炼后的需求,转化为UML类图、用例图等等,然后基于项目的难易程度、扩展性、维护性等,搭建一套软件架构,例如:MVC模式。
在程序开发人员在进行代码编写的时候,基于代码的耦合性、可修改性、可读性等,针对某些类的实现,使用比较适合于编程的软件设计模式。比如:我们经常使用的单例模式、工厂模式等。
因此综合以上我们可以看出来,软件架构模式是战略层面的设计,是通观全局,为了项目工程能够有一个可控的、可靠的、可移植的特性而设计的。而软件设计模式是战术层面的设计,如果软件设计模式设计的不合理,我们尚可及时更替,或者顶多是代码的耦合性差,可读性不高,如果架构模式就设计的不合理,推倒重来的成本对于大型软件软件系统来说,是很难承受的。
2 . 软件架构模式之一:MVC
MVC对于我们比较常见了,不管是桌面软件开发,还是Web系统开发,很多的情况下都使用了MVC模式。那么MVC究竟是什么?
M指的是Model(模型),V(视图),Controller(控制器)。他们所肩负的任务和图示是:
· 模 型:应用软件处理数据逻辑的部分
· 视 图:应用程序中处理数据显示的部分
· 控 制 器:处理软件与用户交互的部分(处理用户的数据输入,将获取到的数据发送到模型)
基本上就是上图这个样子,用户做出“输入”的指令,控制器获取指令,发送给模型处理,模型返回一个结果,并依据业务逻辑选择视图,通过视图,将结果反馈给用户。我们从上边的示意图也可以看出,环节与环节之间是独立的,使得开发人员都可以专注于其中负责的环节,能让不同的的开发者并行开发擅长的环节,减少不必要的时间。