`

关于数据访问模式(五)—— Layers模式

阅读更多

        Layers(层)模式,我想大家应该都不会陌生了。不管是硬件驱动程序、TCP/IP协议,还是J2EE应用软件的架构,层的应用几乎无所不在。我们专注到Web Application上来,三层以及多层结构的应用更是遍地开花。那么,层的强大之处在哪里呢?我们是否真的了解层的划分呢?
        我们面对一个复杂问题的时候,都会想着将这个问题化整为零,分为一个个子问题,然后逐个击破。相应的,处理这样复杂问题的软件也会进行划分。通常我们将处理这些子问题的程序称为component(组件)。那么组件或者组件的集合是否就可以称为层呢?在回答这个问题之前,我们先来了解一个概念——Orthogonal Component (正交组件)[1]
        所谓正交组件,就是处理完全不相交问题的软件组件。当你打算将层模式应用到软件设计的时候,就要花心思去搜寻问题中那些不相交的问题,从而为这些问题建立相应的正交组件。只有正交组件之间的关系才能称为层。这样说,似乎有点玄乎,我也说得有点晕眩了。还是说说现实中的例子吧,其实在之前的Post中有提到的Data Accessor和Active Domain Object就可以称作正交组件,Data Accessor主要负责数据库物理访问的细节,并为Active Domain Object提供相应的接口;而Active Domain Object则是为应用程序提供与Domain Object相关的逻辑操作,同时它是利用了Data Accessor提供的抽象接口来完成自己的具体实现的,它对Data Accessor的具体实现是一无所知的。正是基于这样的条件,Data Accessor和Active Domain Object就成为正交组件,并且形成了不同的层,如下图所示:

        层模式中的某一层实现并非是最困难的,难就难在层的划分,以下的几个方面都是十分适合在单独层中实现的:
        1、数据访问细节:例如Data Accessor;
        2、域对象映射:例如Active Domain Object;
        3、缓存:例如数据缓存,statement缓存; 
        4、数据源分布;
        5、权限管理;
        6、资源管理:例如连接池;
        随着层次划分的增多,随之而来的就是复杂性的提高,而且层初始化的成本也会相应的增加。恰到好处的层次划分在层模式的应用尤其重要。
  
        [1]  Orthogonal Component
        [2]  参考书籍:《数据访问模式——面向对象应用中的数据库交互》

分享到:
评论

相关推荐

    软件架构模式的种类 三种模式

    6. **Layers(分层)模式**:也称为 Tiers 模式,是一种将应用程序划分为多个独立层的设计方法。每一层都有其特定的功能和职责,层与层之间通过接口进行通信。这种模式提高了系统的模块化程度,有利于团队协作和维护...

    CAM350常用快捷键及简单操作.pdf

    - Edit——Layers——Reorder——Renumber:重新排序层,解决显示问题。 - Edit——Move:移动层并进行对齐操作,W键框选,使用+/-和PageUp/PageDown调整大小。 6. 对齐操作: - 使用F键切换到虚线框模式,更...

    Layers响应式业务销售数据统计后台模板

    Layers是一套基于Twitter Bootstrap框架开发的响应式业务销售数据统计后台模板,非常实用的多用途网站后台管理ui界面模板。演示:http://www.sucaihuo.com/templates/3867.html

    Tensorflow(一)训练自己的数据集——猫狗图片

    在本文中,我们将深入探讨如何使用Tensorflow训练一个简单的深度学习模型,特别是在处理自定义数据集,例如这里的猫狗图片分类任务。这个任务虽然规模较小(仅38张图片),但对于初学者来说,是一个很好的实践项目,...

    LSTM多GPU训练、pytorch 多GPU 数据并行模式

    在PyTorch中,LSTM(长短期记忆网络)是一种常用的循环神经网络,适用于处理序列数据,如自然语言。在大型数据集上训练LSTM模型时,为了提高效率,我们通常会利用多GPU进行分布式训练。然而,多GPU训练过程中会遇到...

    Python库 | django-layers-hr-1.9.tar.gz

    5. **权限与认证**:为了保护敏感的人力资源数据,`django-layers-hr`集成了Django的权限和认证系统,可以对用户进行角色划分,限制不同角色对数据的访问权限。 6. **集成其他服务**:此外,`django-layers-hr`还...

    document.layers(1) transcode.

    在使用OpenLayers时,开发者可以创建图层(layers)来叠加不同的地图源,如卫星图像、地形图或者自定义数据。这些图层可以通过JavaScript API动态控制,如显示、隐藏、透明度调整等。与`document.layers`不同,...

    数据挖掘系列(9)——BP神经网络算法与实践 1

    - **隐藏层(Hidden Layers)**:可包含多个,负责对输入数据进行复杂转换。隐藏层的层数没有固定限制,传统观点认为一层足够,但现代深度学习则倾向于使用多层。 - **输出层(Output Layer)**:产生最终的预测...

    keras入门——HelloWorld所需的训练和测试数据

    在本文中,我们将深入探讨如何使用Keras库进行深度学习,并以"HelloWorld"项目为例,详细介绍所需的训练和测试数据。Keras是一个高级神经网络API,它构建在TensorFlow、Theano和CNTK等后端之上,为快速实验和开发...

    深度学习——keras

    深度学习是一种人工智能领域的核心技术,它模仿人脑神经网络的工作方式,通过多层次的处理来学习数据的复杂表示。Keras是一个高级神经网络API,它构建在TensorFlow、Microsoft Cognitive Toolkit(CNTK)或Theano之...

    document.layers

    在JavaScript的早期版本中,`document.layers` 是一个与Netscape Navigator浏览器紧密相关的特性,用于处理网页中的层(layers)布局。这个特性是Netscape Navigator 2.0引入的,目的是为了实现更复杂的页面动态效果...

    EE10 Layers.docx

    通过本教程,您将学习如何使用Layers以及Layer Widgets来呈现地理数据,并掌握一些基本的操作技巧。 #### 二、Layers概述 在GEE中,Layers是一种特殊的对象类型,它们用来表示地图上的单个数据集的图形化表示形式。...

    花分类数据,包含五种花

    标题中的“花分类数据,包含五种花”指的是一个数据集,这个数据集主要用于训练和测试深度学习模型,特别是用于图像分类任务。在这个特定的情况下,数据集包含了五种不同的花卉类型,这使得它成为了一个多类别分类...

    QDataModel_DataModel_layers2me_

    "QDataModel_DataModel_layers2me_" 这个标题暗示我们正在讨论一个与Qt框架相关的项目,利用QDataModel来处理数据,并通过某种方式(可能是"layers2me")将这些数据层次化地呈现给用户。QDataModel是Qt库中的一个...

    信息安全_数据安全_Peel Back the Layers of Your Ent.pdf

    信息安全_数据安全_Peel Back the Layers of Your Ent 用户隐私 网络信息安全 常规渗透 威胁检测 数字取证

    GeoServer学习——发布shp格式的地图

    GeoServer是一款开源的地理信息系统(GIS)服务器,它允许用户发布、管理和共享地理空间数据。在本教程中,我们将深入探讨如何使用GeoServer发布SHP(Shapefile)格式的地图。Shapefile是GIS领域中广泛使用的矢量...

    Wide&Deep的python实践(csdn)————程序.pdf

    它接收`input_x`作为输入,`parms`包含模型参数(如隐藏层单元数、是否使用批量归一化和 dropout),以及`mode`(训练模式或预测模式)。隐藏层通过`tf.layers.dense`添加,激活函数为ReLU,`units`定义每个隐藏层的...

    jQuery 弹出窗口 模式窗口 模式层

    而jQuery弹出窗口、模式窗口(Modal Dialogs)和模式层(Modal Layers)是jQuery增强用户体验的重要功能之一。这些功能允许开发者在不离开当前页面的情况下展示信息、进行用户交互或确认操作,极大地提升了网站的...

    Photoshop导出图层-Export-Layers-to-Files-Fast-master.zip

    Photoshop导出图层-Export-Layers-to-Files-Fast-master,Photoshop导出图层-Export-Layers-to-Files-Fast-master,Photoshop导出图层-Export-Layers-to-Files-Fast-master,

Global site tag (gtag.js) - Google Analytics