- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软件建模技术 南昌航空大学 计算机学院 主讲教师:段喜龙 第二十二章 通用体系结构 本章导读 22.1 经典的三层体系结构 表示层(Presentation):窗口、报表 应用逻辑(Application Logic):管理业务过程的任务和规则 存储层(Storage):持久化存储机构 三层体系结构视图 22.2 面向对象的多层体系结构 一个被推荐采用的面向对象信息系统的多层体系结构包括职责的分离,这种分离和经典的三层体系结构的功能分离类似。 应用逻辑层的分解 以软件类为基本组织结构 领域对象(Domain Object)层——代表领域概念的类。例如一个Sale。 服务(Service)层——提供数据库交互、打印报表、安全性等功能的服务对象。 超过三层——多层体系结构 表示层 应用逻辑层 存储层 部署 可能需要对逻辑上的三层体系结构进行各种各样的物理部署,这些部署包括下列情况: 表示层和应用逻辑层位于客户端机器上,存储层位于服务器端机器上 表示层在客户端机器上,应用逻辑层在应用服务器上并且存储层在另一个单独的数据服务器上 多层体系结构的动机 构件可以得到最大限度的重用 改善系统性能、支持信息共享和协调 有效利用开发人员的特长、提高并行开发能力 22.3 体系结构UML表示法 UML提供了包(Package)的机制来说明元素组或者子系统。 一个包可以是任何种类的一组模型元素,例如一组类、一组用例、一组协作图或者其他的包。 包的UML表示法 体系结构包图 体系结构细节 22.4 包的识别 按照下列原则将元素组织成包: 将提供服务(或者一组相关服务集)的元素组织成一个包,这些元素之间具有高耦合度和密切的协作关系。 包在某种程度上应该被视为具有高聚合度——它所承担的职责相互之间密切关联。相比下,不同包中的元素之间的耦合和合作关系应该比较松散。 22.5 层的划分 22.6 两个包中类的可见性 访问领域包的可见性——(表示包)可以看到领域包内多个代表领域概念的类 访问服务包的可见性——(领域包、表示包)只能见到每个服务包中的一个或者几个类 访问表示包的可见性——没有其他的包可以直接看到表示层 22.7 服务包接口——虚包模式 问题提出:我们需要与一组不同的接口之间建立一个公共的、一致的接口,该怎么做? 解决方案:在子系统定义一个类,这个类对外具有一致的接口,并负责与该子系统相互合作,提供对外服务。 优点:低耦合度 22.8 模型——视图分离模式 提出问题:应该将领域(模型)对象同窗口(视图)对象分开,来支持领域对象的重用,并且使领域对象的接口变更所带来的影响最小化。 解决方案:定义领域(模型)类的时候,注意不要使这些类可以直接看见窗口类,并在领域类中维护应用性数据和功能,而不要在窗口类内维护它们。 模型-视图分离的意义 支持聚合度更高的模型定义 允许将模型和用户界面的开发分别进行 使用户对界面的需求变化对领域层所造成的影响最小 允许新建立一个新视图,而不影响领域层 允许一个模型同时对应多个视图 允许模型层独立于用户界面运行 可以方便地定义模型层到其他用户界面框架的接口 模型-视图分离和间接通信 轮询(Polling) 上拉式(pull-from-above) 下推式(push-from-below) 22.9 一个系统中的间接通信 出版-订阅模式 问题提出:一个事件的发出者(出版者)的一个内部状态发生一次变化,同时其他对象依赖于这个事件或者对这个事件感兴趣(订阅了这个事件)。然而,出版者不能直接了解订阅者的信息,两者之间的通信应该怎么处理? 解决方案:定义一个事件通知系统,让出版者能够间接通知订阅者。 EventManager(纯虚构、中介者、独身)、SignalEvent 回调 当需要传递一个带参数的消息和可能的消息接受者给EventManager,这个消息和接收者的信息可以被封装在一个回调(Callback)类中。然后传递一个回调实例给EventManager,这个回调实例一旦接收到一个事件信号就开始执行(Execute)。 使用回调对象的优点是隐藏了接收者和消息的细节,并且简化了回调的使用者的职责。 事件通知系统 消息的发送者和接收者之间不直接耦合 一个事件可以被广播给任意数量的订阅者 对事件所采取的反映可以在回调对象中被概括 每个回调各自在自己的线程下执行,并发性相对比较容易实现 多层体系结构举例——WebService WebService就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API 。 WebService是建立可互操作的分布式应用程序的新平台。 WebService的主要目标是跨平台的可互操作性 。 示例:SOA SOA(Service-Oriented Architecture)
文档评论(0)