[Architecture Design] : 资料存取层 (一)
前言 :
一般说到应用程序架构
大家最容易联想的应该就是「三层式体系结构」
但笔者所要讨论的应用程序架构
抽象逻辑上是架构在三层式体系结构的上一层
针对软件设计所规划的应用程序架构
相关数据可以参考 : 微软文件「.NET 的应用程序架构:设计应用程序和服务」
本篇将焦点放在「数据存取层」
简介 :
所有的程序都离不开数据存取。
「数据存取层」所定义的就是将数据的存取,与应用程序的逻辑分开。
动机 :
开发应用程序有时会遇到变更数据库的需求,
例如将数据库从SQL换到Oracle。
遇到这种问题
比较常碰到的解法是,把与SQL数据库沟通的程序代码跟SQL语句,改成Oracle。
甚至高深一点的会将SQL语法做成配置文件,成是执行的时候再加载。
这样的方法可以解决问题
但是如果
今天要把SQL数据库变成文本文件或是面向对象数据库呢?
观念 :
数据存取接口定义了逻辑对象B的数据存取接口。
逻辑对象A使用数据存取接口存取逻辑对象B。
将数据存取接口的实作,跟应用程序做切割。
这样的好处是将应用程序跟数据存取层做分割。
数据要往哪边存取,是由实做数据存取接口的对象来决定。
SQL数据存取对象,只需要关注如何使用SQL实作出数据存取接口。
要把SQL数据库改成面向对象数据库,也只需要实作一个面向对象数据库就可以完成。
实作 :
而「资料存取层」实作上
主要分为两个部分
1. 数据存取接口切割 : 依项目考虑来做切割。
2. 数据存取对象生成 : 参考Design Patterns的生成模式(Creational Patterns),或是微软实作的Provider Pattern。
结语 :
其实架构的东西,比较着重在观念。
观念懂了怎么实作就只是技巧噜~
期許自己~
能以更簡潔的文字與程式碼,傳達出程式設計背後的精神。
真正做到「以形寫神」的境界。