`

关于数据访问模式(五)—— 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]  参考书籍:《数据访问模式——面向对象应用中的数据库交互》

分享到:
评论

相关推荐

    WI-FI, BLUETOOTH, ZIGBEE AND WIMAX

    - **子层结构描述**:包括物理层(PHY)和媒体访问控制层(MAC),它们共同负责数据的传输和管理。 ##### 3. Different Physical Layers - **频率跳变扩频物理层**:通过改变载波频率来避免干扰和提高信号质量。 - **...

    source-code.zip

    多变量可视化是数据科学中的重要技术,可以揭示复杂数据集的模式和关联。这部分的代码展示了如何在地图上同时展示多个变量,帮助用户更好地理解和解释地理数据。 总的来说,这个压缩包中的代码示例为开发者提供了...

    ieee 802.3-2005 version

    在信息技术领域,IEEE 802.3-2005标准是关于电信与信息系统间通信的关键规范之一,它专注于局部区域网络(LAN)与都市区域网络(MAN)的具体要求,特别是第三部分——载波侦听多路访问/冲突检测(Carrier Sense ...

    dxfgrabber.pdf

    这个`DXFReader`对象提供了许多方法和属性来访问文件中的各种数据结构。例如,你可以通过`reader.layers`获取到图层信息,通过`reader.styles`获取文字样式表,通过`reader.linetypes`获取线型表,等等。 **图层表*...

    caffe 官方教程 中文版

    #### 第一章:Blobs、Layers与Nets —— Caffe模型解析 - **1.1 Blob的存储与交换** - **Blob**是Caffe中用于存储多维数组的数据结构,它通常用于表示图像或其他输入数据。 - **存储**:Blob可以存储任意数量的...

    Python API在ArcGIS10地理分析中的新进展

    自动化制图模块使得用户能够轻松地管理地图文档(MXDs)、图层(Layers)及其中的数据。该模块提供了许多强大的功能,如: - **汇总地图文档信息**:包括数据源、无效图层、坐标参考信息等。 - **更新图层数据源**...

Global site tag (gtag.js) - Google Analytics