为什么使用 MVC 框架

跟设计模式有关系么?

M指的是模型和数据跟逻辑

V指的是视图显示

C指的是控制

MV之间使用了观察者模式,也就是信号监听,视图监听模型的状态变化而变化,减少了视图和模型的耦合

VC之间用的是策略模式,V使用C,C做处理,C可以被替换为其他C

V自己是组合模式,将多个ui组合使用

V可以直接获取模型数据,V可以有C和M的引用

C可以直接让V和M做修改,C可以生成V拥有M

但是M不能让C和V直接变化,也就是应该实现M跟V,C完全脱离关系。

在实际运用中,一般V里面确实会需要获取M的数据,也会直接调用C的接口(一般来说都会给C封装一个工厂,获取相应的策略C)

C里面直接调用V和M。

检验结构好不好,只要你发现你换了一个新V却不需要怎么改变C,而且完全不需要改变M

或者换了一个C,因为不需要改变M,就是比较好的结构了。主要还是减少这三者之间的耦合。

转载于:https://www.cnblogs.com/leilei-weapon/p/10604527.html

《Head First》 MVC运用的设计模式相关推荐

  1. 架构(三层架构)、框架(MVC)、设计模式三者异同点

    前言: 本博客主要针对架构.框架和设计模式三者的差别.还有三层和MVC的差别进行讨论.对于这三者一点都不了解的.请点在维基和百度百科上补补课.这里就不发链接了 软件架构(software archit ...

  2. MVC和MTV设计模式

    1.MVC MVC最初是由施乐公司旗下的帕罗奥多研究中心中的一位研究人员给 smalltalk语言发明的一中软件设计模式. MVC概述:MVC全名是ModelViewController,是模型(mo ...

  3. ea设计 mvc模式_MVC设计模式

    写了几天代码,然后对之前学到的知识,进行反思,写出来放在QQ空间上和博客上,目的是互相学习,然后希望可以得到编程高手的补充!这是我转载加修改的博客. 这是我做了2.3天左右的JavaWeb管理系统,b ...

  4. Java设计模式(十四):MVC设计模式

    1. 应用场景 MVC设计模式广泛应用于桌面应用程序开发和网页页面开发这些与用户交互的应用场景中. 2.概念 众所周知MVC不是设计模式,是一个比设计模式更大一点的模式,称作设计模式不合理,应该说MV ...

  5. iOS中MVC设计模式

    在组织大型项目的代码文件时,我们常用MVC的思想.MVC的概念讲起来非常简单,就和对象(object)一样.但是理解和应用起来却非常困难.今天我们就简单总结一下MVC设计理念. MVC(Model V ...

  6. MVC是架构模式,而不是设计模式

    最早学编程的时候看过一些书,印象深刻的一本书<设计模式解析>,那本书给我后来的工作提供了很大的帮助. 他叫我站在问题模型的立场上指定解决方法,也教会了我软件设计中每个问题都可以细化到到不可 ...

  7. 可可的设计模式:MVC和MVVM

    设计模式使您的应用程序代码更具模块化,并且在错误修复和更改时更加宽容. 在本文中,您将学习MVC(模型-视图-控制器)和MVVM(模型-视图-视图模型)设计模式. 尽管设计模式(也称为架构模式)是可伸 ...

  8. MVC设计模式、单体架构、前后端分离、微服务

    萌新程序员在学习web开发时一定对单体架构.前后端分离架构.MVC.微服务这几个名词不陌生,想要搞清它们之间的关系,但互联网的信息分散杂乱,有些文章之间甚至还互相冲突. 我也迷迷糊糊,但本着刨根问底的 ...

  9. MVC设计模式原理简述

    开发MVC项目之前首先明确一点,MVC设计模式可以带来更好的软件结构和代码重用. MVC如何工作 MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC 应用程序被分成三个核心部 ...

  10. 设计模式系列·抽象工厂模式

    前言 以小说的笔法写的设计模式系列文章,你绝对看得懂![首发于公众号:"聊聊代码"] 设计模式系列·王小二需求历险记(一) 设计模式系列·王小二需求历险记(二) 设计模式系列·封装 ...

最新文章

  1. 在腾讯待了 9 年,还是离了职
  2. Word 最后一页无法删除-解决办法
  3. 在Asp.Net MVC中使用ModelBinding构造Array、List、Collection以及Dictionary
  4. 非一体式台式计算机,一体台式机推荐及介绍【详解】
  5. from __future__ import absolute_import的作用
  6. 秒杀系统优化方案之缓存、队列、锁设计思路
  7. myeclipse下加VSS版本控制插件
  8. java图片旋转90度_Java实现图片内容无损任意角度旋转
  9. 如何修复Win7照片查看器无法显示的图片
  10. Chrome浏览器通过chrono下载插件设置下载断点续传
  11. Nginx服务详细篇从基础到反向代理和负载均衡
  12. 批量删除多个 PDF 文档空白页
  13. Word中相邻的两页无法没有对齐的解决方法
  14. 谷歌插件开发ajax请求,谷歌扩展程序设置ajax请求容许跨域(极少人知道的解决方案)...
  15. 8、取得比普通员工 的最高薪水还要高的领导人姓名【bjpowernode34道SQL题】
  16. linux安装mysql时使用临时密码登录不进去mysql: [Warning] Using a password on the command line interface can be insec
  17. 破解系统登录密码与软件密码
  18. cordova build android 出错问题汇总
  19. django天天生鲜项目
  20. 大宝大话大数据(一) ——大数据的整体框架

热门文章

  1. Ansible Loops
  2. memcached整理の基本使用
  3. ASP.NET Web应用程序和ASP.NET网站的区别
  4. Gartner发布2011年SIEM市场分析报告(幻方图)
  5. Debian下配置iSCSI Target。
  6. DPDK设备驱动的匹配和初始化
  7. 解决VIM打开U盘文件中文乱码的问题以及VIM有用的配置
  8. C语言中可变参数的宏 __VA_ARGS__
  9. android_get_control_socket 获取 UNIX 域套接字 FD
  10. scala 单例对象 伴生对象