热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

《面向模式的软件体系结构1模式系统》读书笔记(6)视图处理程序

视图处理程序从用户角度,管理多视图应该简单方便,而对系统内客户机组件而言,也应如此。单个视图的实现不应该互相依赖,同时不与用

视图处理程序

   从用户角度,管理多视图应该简单方便,而对系统内客户机组件而言,也应如此。单个视图的实现不应该互相依赖,同时不与用来管理视图的代码相混合。视图的实现可以变化,并且可以在系统生存期中可以加入视图的附加类型。

 

结构

   视图处理程序是这个模式的中心组件。它负责打开新的视图,并且客户机可以说明他们想要的视图。视图处理程序实例化相应的视图组件,维护它正确的初始化,并要求显示自身的新视图。视图处理程序负责处理视图一般操作(最小化、关闭等)。

   然而,视图处理程序的主要责任是提供视图管理服务。包括将特定视图放在前景窗口,平铺所有视图,将单个视图分成几个部分,刷新所有视图,复制视图以获得同一文档的多个视图。

   视图处理程序的一个附加职责是协调视图之间可能存在依赖性,例如几个视图显示一个复合文档的不同部分。

  

   抽象视图组件定义了所有视图的公共接口。视图处理程序用这个接口来创建、协调以及关闭视图。系统底层平台用该接口来执行用户事件,如重新设定窗口大小。抽象视图的这个接口必须为视图可以实现所有可能的操作提供相应的功能。

   特定视图组件是从抽象视图派生而来,并实现抽象视图的接口。此外,每个视图都实现其自身的显示功能。视图从视图供应者处检索数据,准备显示这个数据并将数据呈现给客户。

 

 

   供应者组件提供了由视图组件显示的数据,供应者提供了允许客户机(比如视图)获得和更改数据的一个接口。供应者通知相关组件有关其内部状态的变化,这些相关组件或是单个的视图,或是在视图处理程序组织更新时视图处理程序自身。

 

 

优点

   1)视图的统一处理。所有的视图共享公共接口,因此,视图处理程序及系统所有其他的组件都能够一致地处理和操作所有的视图,与它们显示的内容以及实现方法无关。

   2)视图的可扩充性及可变更性。在带有抽象库的继承层次中的视图组件组织支持新视图的集成而不改变现有的视图和视图处理程序。由于单个的视图被封装在分离的组件中,因此变更它们的实现不会影响系统的其他组件。

   3)特殊应用的视图协调。由于视图被中心程序管理,因此有可能实现特殊的视图协调策略。

 

不足

   1)有限的适用性。只有当系统必须支持许多不同的视图,而视图彼此具有逻辑上的相关性,或者视图可能由不同的供应者或输出设备配置时,使用视图处理程序模式才是值得的。如果系统必须实现特定的视图协调策略,视图处理程序模式也具有使用价值。除了这些应用外,视图处理程序模式只会带来额外的实现工作并且会增加系统内部的复杂性。

   2)效率。如果视图处理程序负责组织视图更新,则视图处理程序组件会在需要创建视图的客户机之间以及变更通知的传播链内引入间接方法层,这将导致性能的损失,然而,大部分情况下这些损失是可以忽略的。 

 

 

转:https://www.cnblogs.com/pennant/archive/2012/08/17/2643436.html



推荐阅读
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • XNA 3.0 游戏编程:从 XML 文件加载数据
    本文介绍如何在 XNA 3.0 游戏项目中从 XML 文件加载数据。我们将探讨如何将 XML 数据序列化为二进制文件,并通过内容管道加载到游戏中。此外,还会涉及自定义类型读取器和写入器的实现。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 在即将迎来26岁生日之际,作者的人生陷入了低谷。经过近三年的硕士学习后,最终决定退学,并且面临没有工作经验的困境。尽管如此,作者依然坚定地选择为自己的人生负责。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 在网页开发中,页面加载速度是一个关键的用户体验因素。为了提升加载效率,避免在PageLoad事件中进行大量数据绑定操作,可以采用异步加载和特定控件来优化页面加载过程。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
author-avatar
为了未来而奋斗2010
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有