模型和视图分离原则

简介: 模型和视图分离原则

该原则至少具有两部分:

1. 不要将非UI对象直接与UI对象连接或耦合。例如,不要让Sale软件对象(非UI“领域对象”)引用Java Swing JFrame窗口对象。因为窗口与某个应用相关,而(理想情况下)非窗口对象可以在新应用中重用或附加到新界面。

2. 不要在UI对象方法中加入应用逻辑(例如税金的计算)。UI对象应该只初始化UI元素、接受UI事件(例如鼠标点击按钮)、将应用逻辑的请求委派到非UI对象(例如领域对象)。

模型-视图分离原则规定,模型(领域)不应该与视图(UI)对象连接。例如,Register或Sale对象不应该直接向GUI对象,ProcessSaleFrame发送,请求其显示,改变颜色,关闭等。

观察者模式(O’bserver)模式是该原则的合理扩展,即领域对象只能PropertyListener(java中的常用接口)的接口向视图的UI对象发送消息。基于该模式,领域对象不知道UI对象的存在。领域对象只把消息发送给了实现了PropertyListener接口的对象,该更进一步的应用,领域对象封装了与应用逻辑相关的信息和行为。窗口类相对简单,负载输入,输出,以及捕获GUI事件,但是并不应用数据和应用逻辑。

模型-视图分离的动机包括:

  • 支持内聚的模型定义,这些定义只关注领域过程,而不是用户界面。
  • 许对模型和用户界面层分别进行开发。
  • 是界面的需求变更对领域层的影响最小化。
  • 允许新视图能够被方便地连接到现有的领域层之上,而不会对领域层产生影响。
  • 允许对同一模型对象同时使用多个视图,例如销售- 信息同时具有表格和业务图表视图。
  • 允许模型层的运行不依赖于用户界面层,例如,消息处理或批处理模式的系统。
  • 允许简模型层能够简便地移植到另一用户接口框架下。

作者:glowd
原文:https://blog.csdn.net/zengqiang1/article/details/52710985
版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章
小知识 .rp文件用什么打开
rp 文件可以通过 Axure8 导入打开,具体方式如下:
4730 0
小知识 .rp文件用什么打开
|
JavaScript 前端开发 数据安全/隐私保护
VUE3实现全局水印功能
watermark-js-plus 是一个用于给图片添加水印的 JavaScript 库。它提供了一个简单的方式来在图片上添加文字水印、图片水印或自定义水印。
1055 0
深入解析哈希表、哈希映射和并发哈希映射的区别,以及死锁的成因和解决方案
深入解析哈希表、哈希映射和并发哈希映射的区别,以及死锁的成因和解决方案
|
域名解析 SEO 搜索推荐
网络基础知识之————A记录和CNAME记录的区别
1、什么是域名解析? 域名解析就是国际域名或者国内域名以及中文域名等域名申请后做的到IP地址的转换过程。IP地址是网路上标识您站点的数字地址,为了简单好记,采用域名来代替ip地址标识站点地址。域名的解析工作由DNS服务器完成。
11445 1
|
人工智能 安全 Java
Serverless JManus: 企业生产级通用智能体运行时
JManus 是面向 Java 的企业级通用智能体框架,支持多 Agent 框架、MCP 协议和 PLAN-ACT 模式,具备高可用、弹性伸缩的特性。结合阿里云 Serverless 运行时 SAE 和 FC,实现稳定安全的智能体应用部署与运行。
555 23
|
9月前
|
机器学习/深度学习 资源调度 数据可视化
YOLOv11改进策略【注意力机制篇】| 引入Shuffle Attention注意力模块,增强特征图的语义表示
YOLOv11改进策略【注意力机制篇】| 引入Shuffle Attention注意力模块,增强特征图的语义表示
473 1
YOLOv11改进策略【注意力机制篇】| 引入Shuffle Attention注意力模块,增强特征图的语义表示
|
JSON 前端开发 JavaScript
前端使用lottie-web,使用AE导出的JSON动画贴心教程
前端使用lottie-web,使用AE导出的JSON动画贴心教程
1797 2
|
设计模式 存储 前端开发
MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序的输入逻辑、业务逻辑和用户界面逻辑分离
【6月更文挑战第17天】**MVC模式**是软件设计模式,用于分离输入逻辑、业务逻辑和用户界面。模型处理数据和业务,视图展示数据,控制器协调两者响应用户请求。优点包括:关注点分离、提高开发效率、简化测试、支持多视图及便于大型项目管理。
243 3
|
小程序 安全 数据库连接
为什么已经提交的小程序无法连接后台服务?
【10月更文挑战第17天】为什么已经提交的小程序无法连接后台服务?
1253 0
|
缓存 算法
HTTP 缓存技术 - 协商缓存
HTTP 缓存技术 - 协商缓存
328 1
HTTP 缓存技术 - 协商缓存