《数据访问模式》笔记:数据访问器

原创 2004年08月16日 10:34:00

第一章:数据访问器(Data Accessor)模式<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

简述

“在单一组件内封装物理数据访问细节,只公开逻辑操作。应用程序代码保留底层数据模式的知识,但是与数据访问只能分开。”

封装原则

o  公开逻辑操作,封装物理操作——比如不直接使用SQL语句而用逻辑操作。

o  公开逻辑资源,封装物理资源——可以充分利用资源,例如连接的共享。

o  封装平台细节——平台无关性。

o  封装优化细节——将优化的弹性放到数据访问器中,而不是应用代码中,这样可以统一的优化。

适用性

o  需要对应用程序逻辑隐藏物理数据访问的复杂性和平台问题。

o  在底层物理数据库驱动程序所提供的语义职位,需要管理另外的语义。比如应用程序级的锁定机制。

o  需要定义多个数据访问实现并在运行时从中选择。

优点

o  清晰的应用程序代码——充斥着数据访问细节的应用程序代码难以阅读和维护,使用数据访问器,可以让应用程序代码更加集中到它自身的业务逻辑上。

o  新数据库特性或平台的采用——如果数据访问代码分布到整个系统中,如果要使用新的数据库特性(例如从SQL Server平台切换到Oracle平台)就要浏览和修改整个系统的代码,而使用数据访问器可以将这种细节封装到一个组件中。

o  结合优化策略——调整应用程序性能时,数据访问代码常常是主要的分析焦点,同样的使用数据访问器就可以一次引入优化策略而作用于整个系统。

o  可交换的物理数据访问实现。

缺点

o  限制了应用程序对数据访问的控制——要求数据访问器设计要有足够的通用性。

策略

o  定义通用的逻辑操作——一方面要注意通用性;另一方面也不要引入不必要的复杂性,可以通过研究用例来解决这个问题。我觉得经验的积累也很重要。

o  留下优化和改进的位置——在开发过程中经常要牺牲功能以保证进度。

o  防止应用程序的抵消用法。

实例化

o  单件(Singleton)数据访问器实现。

o  初始化和参数传递——缺点是需要在类的构造函数和操作定义一个额外的参数。

o  数据访问器工厂。

设计模式——访问器模式

概述: 我们去银行柜台办业务,一般情况下会开几个个人业务柜台的,你去其中任何一个柜台办理都是可以的。我们的访问者模式可以很好付诸在这个场景中:对于银行柜台来说,他们是不用变化的,就是说今天和明天...
  • wang15061955806
  • wang15061955806
  • 2016年04月01日 17:20
  • 557

迭代器模式(二):迭代器模式概述

2 迭代器模式概述        在软件开发中,我们经常需要使用聚合对象来存储一系列数据。聚合对象拥有两个职责:一是存储数据;二是遍历数据。从依赖性来看,前者是聚合对象的基本职责;而后者既是可变化的,...
  • Mark_LQ
  • Mark_LQ
  • 2015年09月03日 17:42
  • 428

PHP设计模式-数据访问对象模式

在PHP开发中,我们经常会与数据库打交道(本例中以mysql为例),尤其是一些数据库的增删改查操作,是经常要用到的。假定,我们有一个mysql数据库,有服务器名$host, 数据库用户名$user, ...
  • u013588608
  • u013588608
  • 2014年02月02日 16:01
  • 615

数据访问对象(DAO)设计模式 in Java

数据访问对象(DAO) 设计模式是一个非常受欢迎的实现 Java 应用中持久层的设计模式,它是基于抽象和封装设计原则并且避免应用受到来自持久层的改变所带来的影响。比如说,将数据从 Oracle 换到...
  • u011284860
  • u011284860
  • 2016年02月29日 23:47
  • 1859

ADO 与ADO.NET两种数据访问方式区别。

1. ADO与ADO.NET简介   ADO与ADO.NET既有相似也有区别,他们都能够编写对数据库服务器中的数据进行访问和操作的应用程序,并且易于使用、高速度、低内存支出和占用磁盘空间较少,支持用...
  • lvjin110
  • lvjin110
  • 2013年09月06日 11:11
  • 1466

MVP 你应该了解的设计模式(二)实例分析

MVP for Android MVP代表Model,View和Presenter。 View层负责处理用户事件和视图部分的展示。在Android中,它可能是Activity或者Fragm...
  • xinlangren88
  • xinlangren88
  • 2016年08月10日 00:10
  • 566

JS对象高级属性:数据属性与访问器属性

一、说明:使用以下介绍的高级属性,需要注意浏览器是否支持。高版本浏览器,如ie9+通常支持。另外需要说明的一点,这里所说对象包括function和Object,而不是单指Object二、数据属性:Co...
  • yu766588220
  • yu766588220
  • 2016年06月01日 15:51
  • 4633

JavaScript笔记--数据属性和访问器属性

在JavaScript中最基本的创建一个对象的方法是new一个Object()的实例,然后再为其添加属性与方法,下例创建一个包含属性name的person对象,name属性的特征值为”xiaochan...
  • love__linux
  • love__linux
  • 2015年04月21日 19:00
  • 2200

Spring Boot的数据访问

本文在 Spring Boot应用连接数据库MySQL简单介绍Spring Boot的数据访问。Spring Data项目Spring Data项目是Spring用来解决数据访问问题的一揽子解决方案,...
  • webzhuce
  • webzhuce
  • 2017年01月15日 12:52
  • 1027

数据属性和访问器属性

JavaScript中把对象定义为“无序属性的集合,其属性可以包含基本值,对象或者函数”。相当于对象就是一组没有特定顺序的值 JavaScript中定义了两种不同的属性:数据属性和访问器属性。数据属...
  • MoLvSHan
  • MoLvSHan
  • 2017年06月28日 09:42
  • 147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《数据访问模式》笔记:数据访问器
举报原因:
原因补充:

(最多只允许输入30个字)