三层架构与设计模式思想

合集下载

企业进销存管理系统毕业论文

企业进销存管理系统毕业论文

企业进销存管理系统毕业论文进销存管理是现代企业生产经营中的重要环节,是完成企业资源配置的重要管理工作,对企业生产经营效率的最大化发挥着重要作用。

下面是店铺为大家整理的企业进销存管理系统毕业论文,供大家参考。

企业进销存管理系统毕业论文篇一基于的企业进销存管理信息系统的设计与实现企业进销存管理系统毕业论文摘要[摘要] 本文通过研究三层体系结构模式的应用系统设计方法,详细地阐述基于技术进行开发B/S三层结构应用系统的主要设计思想和步骤,并结合一个进销存系统项目的开发过程作为示例进行分析与设计,具体地介绍利用面向对象技术的三层结构系统的应用与实现,为广大中小企业对物资进行管理提供参考。

企业进销存管理系统毕业论文内容[关键词] 三层架构;;进销存在应用系统开发过程中,C/S两层体系结构的开发模式得到了广泛的应用。

其应用程序逻辑通常只分布在客户和服务器两端,它采用由客户端发出数据资源访问请求,然后服务器端将结果返回到客户端的信息传递机制,对系统的性能、升级与维护等有很大制约。

随着面向对象技术、分层建模技术和网络浏览器导航技术的逐步成熟,B/S模式的多层应用体系结构得到了越来越多的应用。

应用系统开发模式从原来的两层结构向三层甚至N层结构的转变,主要是在客户端和服务器之间加入了一个被称为“应用服务器”的一层或多层应用服务程序,使原来集成表示层处理和业务逻辑处理的臃肿胖客户端得以释放,演变为表示层和业务逻辑层分开实现的模式,使开发人员在保证为用户提供必要功能操作的简洁界面前提下,将主要精力集中在系统核心业务逻辑的分析、设计和开发上;从C/S模式到B/S模式的转变,使得原客户端维护工作发生了翻天覆地的变化。

C/S模式应用程序的客户端要求管理人员在每个客户端计算机系统上安装客户端程序,当需要维护系统时,管理人员需要到客户端的用户那里一个一个地解决问题;而B/S模式只需用户在自己的电脑系统中安装浏览器软件(该软件通常在操作系统中可附带自动安装),应用系统的全部程序可以集中放在服务器中由管理人员统一管理维护,这可以大大节省系统维护的开销。

软件架构设计的分层与模块化

软件架构设计的分层与模块化

软件架构设计的分层与模块化软件架构设计是指在软件开发过程中,对软件系统的整体框架和结构进行规划和设计。

良好的软件架构设计可以提高软件的可维护性、可扩展性和可重用性,使软件具备更好的扩展性和适应性。

在软件架构设计中,分层与模块化是两个关键的设计原则。

本文将深入探讨软件架构设计中分层与模块化的概念、特点以及应用。

一、分层设计分层设计是一种将软件系统划分为不同层次的设计思想,每一层都有明确的职责与功能。

通过分层设计,可以将复杂的系统划分为相对独立的模块,各个模块之间通过接口进行通信和交互,降低了模块之间的耦合度,提高了系统的灵活性和可维护性。

典型的软件分层设计包括三层架构和MVC架构。

1. 三层架构三层架构是指将软件系统分为表示层、业务层和数据层三个层次,并且每个层次有着不同的职责和功能。

表示层主要负责用户界面的展示与交互,将用户请求传递给业务层进行处理;业务层负责处理具体的业务逻辑,对外暴露接口供上层调用;数据层则负责数据的访问和持久化,与数据库进行交互。

三层架构的优点是模块清晰、耦合度低、易于维护,适用于大型软件系统的开发。

2. MVC架构MVC(Model-View-Controller)架构是一种常用的应用程序设计架构,将软件系统划分为模型层、视图层和控制器层三个部分。

模型层负责处理业务逻辑和数据操作;视图层负责界面的显示和用户交互;控制器层负责协调模型层和视图层的交互,并根据用户的请求进行处理。

MVC架构的优点是良好的模块划分,易于扩展和维护,适用于中小型软件系统的开发。

二、模块化设计模块化设计是将软件系统划分为相互独立、具有一定功能的模块,每个模块都有自己的职责和接口。

通过模块化设计,可以将复杂的系统分解成多个小的模块,每个模块可独立开发和测试,提高了开发效率和质量。

常用的模块化设计方法有面向对象编程和微服务架构。

1. 面向对象编程面向对象编程是一种将问题分解成多个对象,并将对象组织成相互交互的模块的编程思想。

【国家自然科学基金】_三层架构_基金支持热词逐年推荐_【万方软件创新助手】_20140803

【国家自然科学基金】_三层架构_基金支持热词逐年推荐_【万方软件创新助手】_20140803
2008年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
科研热词 面向对象 集团化管理 钢铁企业集团 远程过程调用 聚类域 网络 生命周期 模式 框架 架构 整体解决方案 平台 工厂模式 对等计算 多代理 外观模式 复合架构 地价评估 危险理论 动态演化 内部服务提供 入侵检测 信息检索 体系结构 人工免疫 云模型 中间服务层
2014年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
三维管线 www浏览器技术 web服务 vpn架构 s架构 sql server 2008 soa skyline script语言 rfid技术 orm net技术 mvc jena j2ee技术 ihe c# b/a/s架构 3层b .net "描述-综合"设计方法学 "功能-结构-物理"模型
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2014年 科研热词 三层架构 重点建设项目 资源共享 药学 船舶监控系统 网络拓扑 系统开发 管理系统 海量遥感数据 时效性 并行计算架构 并行算法 实验室 可扩展性 信息管理 信息化 云计算 rfid技术 推荐指数 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
推荐指数 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
2011年 序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

软件工程实习收获总结-

软件工程实习收获总结-

软件工程实习收获总结当前软件人才培养工作突出问题是人才不适用,为了培养出实践能力强,综合素质高,实用,适用的企业所需软件人才,今天X给大家找来了软件工程实习收获总结,希望能够帮助到大家。

软件工程实习收获总结篇一时间过的很快,转眼间已经实习将近5个月,其中有2个月是属于完全被流放的。

最先在内部系统组参与内部管理系统开发(struts+mysql+spring+hibernate) ,之后是去做网络交换机软件的脚本测试。

现在又回归内部系统,虽然在脚本组期间,编码能力被别人甩在后头,但至少具有了一些测试经验。

至少自己做的东西,是真正交付到了客户手上,至U也稍微有些成就感。

1、浅谈测试一直以来,我都认为测试是脱离了软件工程范围的工作,不以为屑。

但在实际情况中,测试是既重要且难以精湛的.其真正的压力,在于找不到bug,责任在你,而不在于编码人员。

一般的测试人员不懂编码,他们靠的是日以累计的经验总结和想象力。

而要做到高级测试工程师,则一定要懂编码,因为这是你完全掌握整个系统的方方面面具体运作的前提。

但占主导地位的,还是大型系统的集成测试经验。

实际项目中,编码时间一般只占30%左右,真正耗费时间的是IT阶段的找bug与对应bug,此阶段基本评定了coder的编码质量。

2、程序员的困惑有些人,以为教学视频和代码看多,自己就懂的多,实际做起来,却不知从何下手,问题在那?如何定位?如何解决?通通跟一样能力有关,debug追踪能力,也称调试。

在项目组工作不愁源码资源,但问题是蛋糕摆在面前,你如何去消化?有位同事告诉我:代码看几遍都没用,要去抄,例如一个查询模块,在此基础上去做具体记录的历史记录查询模块,你可能会觉得很简单,但实际情况却往往报一堆异常,配置问题涉及到方方面面,以及数据库字段,传值问题等等,一大堆对于新人来说很郁闷的问题。

但不用怕,只要学会调试,一个个问题去追踪,一个个去解决,自然而然,那段“源码”才真正属于你。

基于责任模式的资源管理平台架构设计

基于责任模式的资源管理平台架构设计

⑥ 2 0 Si eh E gg 08 e .T c. nn.
基 于 责任 模 式 的资 源 管 理 平 台 架构 设 计
韩松涛 徐 捷
( 国防科学技术大学继续教 育学院 , 长沙 台组 织结构及功能的不统 一 问题 , 运用分析 模式 中责任模 式的建模 思想, 用 M C设计模 式 采 V
第 8卷
第2 l期
20 0 8年 l 月 1







V0. No 2 18 .1
No . 2 0 v 0 8
17 -8 9 2 0 ) 154 -5 6 1 11 (0 8 2 -9 60 - - -
S i n eTe hn lg n Engn e i c e c c oo y a d ie rng
方 式 , 来 的 问 题 一 是 每 个 系统 都 要 建 一 套 资 源 带 表, 包括维 护工具 , 加 重 复 的不 必 要 的工 作 量 ; 增 二
1 2 责 任模式 . 当某人 或某 个 组 织 对 别 人 或 别 的 组 织 承 担 某 种责 任 时会 运用 到责 任 概 念 。它 是 一 个 非 常 抽 象 的概 念 , 以用 来 描 述 很 多 特 殊 的 问 题 , 括 组 织 可 包
1 1 模 式 .
的定义如下 :a y参与者( Pr : t 团体 ) 责任关 系中任何 ,

模式 , p t m。其 实就 是 解 决 某 一类 问题 的 即 ae t 方 法 。每个 模 式 都 描 述 了 一 个 在 环 境 中不 断 出现
20 0 8年 9月 5日收到 第一作者简介 : 韩松涛 (9 7 ) 男 , 17 一 , 硕士研究生 , 究方向 : 息 研 信 系统协同与集成技术 。

语言是载体,思想才是灵魂

语言是载体,思想才是灵魂

语言是载体,思想才是灵魂========== 尤其是在上面的实体类与VO类中最能体现出来。

它们都是实现了对实体对象的封装。

不同的类或者不同的架构之间用法实体对象来举行交互。

同时这样反应了面对对象的特点。

java DAO设计模式中VO实现类+接口也就相当于C中的实体类(举行数据层与业务规律层或业务规律层与表示层之间的交互)DAO中的数据库衔接类也就自然而然的成了三层架构中的数据层。

DAO实现类也就是三层架构中的业务规律层了。

此外java DAO设计模式中还有一个工厂类。

用法DAO工厂类可以很好的解决后期修改的问题,可以通过该DAO工厂类的一个静态办法来获得DAO实现类实例。

这时假如需要替换DAO实现类,只需修改该DAO工厂类中的办法代码,而不必修改全部的操作数据库代码。

=====比喻上面程序的工厂类 +++++++++++ package .bzu;public class PersonDaoFactory { //这是工厂类 public staticPersonDao getPersonDaoInstae(){ return new PersonDaoImpl(); ====================== 这种模式是比较常用的一种操作数据库的思想模式。

在其他语言中也是有同样的体现。

就像上面说的C中的三层架构。

就是同一种思想在两种语言上的不同表现形式而已。

======================= 思想的确是编程灵魂。

就像讲师说的那样:代码谁也会敲,关键是思想。

任何一个程序,即使是很容易的程序,要想做好,也有无数文章可做。

平庸处见不平庸,容易里有不容易,才是高手。

能把白菜这种容易的菜做成美味的厨子才是好厨子。

+++++++++++++++++++++++++++ +++++++++++++++++++++++++++第1页共1页。

浅谈基于ASP.NET2.0的三层架构项目的设计与实现

浅谈基于ASP.NET2.0的三层架构项目的设计与实现
区分 层次 的 目的是 为 了 “ 内聚 , 耦合 ” 高 低 的
思 想 ;2三层 架 构 的优 点 。 () 三层 结 构使 项 目 结 构 更 清 楚 , 工 更 明确 , 利 于 后 期 的维 分 有 护 和升 级 。 发 人 员可 以 只关注 整 个结 构 中 开 的其 中某 一 层 ; 以很 容 易的 用新 的 实现 来 可 替 换原 有 层次 的 实现 ・ 可以 降低 层 与 层之 间 的 依 赖 ; 以利 于 各 层 逻辑 的 复 用 t 以 经 可 可 过 简单的配 置实现s l sr e数 据库 与o a l q e r v rc e 数 据库 之 间的 转换 ; 户端 只能 通过 逻 辑 层 用 来 访 问 数据 层 , 少 了入 口点 , 很 多 危 险 减 把 的 系统 功 能 都屏 蔽 了 。
性 日益 突 显 。
2基于A P I T .的三层架构项 目的设计 在 网站 中添加 登录 页面 , 用BL 层的lg n S . 20  ̄ E 调 L o i 与实现 方 法 实 现 用 户登 录 功 能 。
随着 . T 不断 升级 , 用A P. E NE 的 使 S N T 来 构 建 B s 层架 构 的 应 用 程 序 越 来 越 简 / 三 单 , 面 以 用 户登 录 模 块 为 例子 , 述 如 何 下 讲 使用 A P N T .和S L S R R o 5 S . E 2 0 Q E VE 2 o 数据 库 来 构 建 一 个三 层架 构 应 用 程 序 。 2 1 计 数 据 库 .设 用 户登 录 模 块 需 要 在 数据 库 中 创 建一 张 用 户 信 息表 ( b — e ) 存 储 用 户 的信 T l Us r来 息 。 户信 息表 ( b— s r的表 结构 为表 1 用 T lU e) 。 22 . 创建M dl oe 类库 。 在类库 中以Tl sr b Ue — 表生 成 一个 实体 类U e lf . 码如 图1 sr o代 n 2 3数据 访 问 层 . 创建D L A 类库 , 引用Mo e dl , 类库 在类库 中 创建 访问用 户信息 类U e D O, s r A 代码如 图2 。 2. 4业 务 逻 辑层 创建 类库B L 引用Mo e L , dl 类库 和D L A 类 库, 添加 登录 业务L g S r i 类 , o i e v e 代码如 图3 n c 。

基于.Net三层架构技术在MIS的应用探讨——以电力竞价交易系统为例

基于.Net三层架构技术在MIS的应用探讨——以电力竞价交易系统为例
第2 7卷
第 5期
武夷学院学报
J RNAL OF W UYIUNI OU VERST I Y
V0 .7 1 No5 2 .
Oc .o 8 t o 2
20 0 8年 1 0月
基 于. 三 层 架 构技 术在 M Ne t I 应 用探 讨 S的
— — ・
以 电 力 竞价 交 易 系 统 为 例
供 的强大 的 类 , 并编 译 为微 软 的中 间语 言 ( I , MS L) 在
XML和 We evcs bS r i 技术 , e 以及 支持 面 向服务 的体 系 架 构 , 于构 建 灵 活 的分 布 式软 件 构 架 。 Ne 多 层 分 适 . t
其 他 的应 用 中就 可 以 当作 一个 组 件 来 调 用 。 时 享受 同 公共 运 行 库带 来 的 一切 好 处 :垃 圾 自动 回收 ( C) 实 G 、 时 编译 ( ) 跨 语言 互 动 、 , 、 厂 跨平 台 。 Ne 还 可 比喻是 . t 操 作 系统 提供 给 开 发 人员 的 面 向对 像 的 AP 。 P I AS .
准的. t 平台的多层软件架构体系为基础 , / Ne 跨 B S和 C/ 合 的方 式 来 构 建 电 力 竟 价 交 易 系 统 。 系统 的 数 据 层 、业 S结 对
务逻辑层 、表现层进行 了规划和分析 ,为 .NE T平台下开发各类管理信息系统提供 了有 益的尝试 。
关键词 : 管理信息系统( S ; MI)电力竞价; 体系结构 ; 多层架构
黄金 凤 张 恺
福州 3 0 0 ) 5 0 7
( 福建交通 职业 技术学院
信息技术与工程系 , 建 福
摘要 : 基于.N t e 三层架构技术是一种较好的分层式结构,优势在于分散关注、 松散耦合、 逻辑复用、标准定义, 被广
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

三层架构与设计模式思想 _lxp 1关于架构

架构这个词从它的出现后,就有许许多多的程序员、架构师们激烈地讨论着它的发展,但是架构一词的出现,却是随着三层架构的出现才出现的。当然,目前应用三层架构开发也正是业界最关注的主题。那么这里我们来看看单层、双层、三层甚至多层架构到底是怎么一回事。单层结构是80年代以来小型应用的结构,在那个结构化编程充斥的时代,还没有出现架构的概念,典型的是基于Dbase、Foxbase等小型数据库的应用。双层结构的同义词可以理解为传统的客户/服务器结构,尽管目前占统治地位的结构,但是其封装移植等方面的缺陷,已使它步入暮年,典型是基于Oracle、Infomix等大型数据库的C/S应用。三层结构是传统的客户/服务器结构的发展,代表了企业级应用的未来,典型的有Web下的应用。多层结构和三层结构的含义是一样的,只是细节有所不同。之所以会有双层、三层这些提法,是因为应用程序要解决三个层面的问题。

1.2三层架构概述随着软件工程的不断进步和规范以及面向对象编程思想的应用,人们对封装、复用、扩展、移置等方面的要求,使得双层架构显然更加臃肿繁琐,三层程序架构体系应运而生,可以说,三层架构体系结构是面向对象思想发展中的必然产物。当然三层架构对于目前来说早已经不是什么新鲜事物了,最早听到这个词应该是几年前使用java知道的吧, j2ee三层架构体系流行了这么多年,一直没有使用过,不过j2ee三层架构体系的提出,对软件系统的架构产生了巨大的影响,Microsoft、Boland这些公司自然不甘落后,例如Microsoft的.net平台,更有甚者,称.net之c#为java的儿子。那么何谓三层架构?所谓三层架构,是在客户/服务之间加入了一个"中间层",也叫组件层。它与客户层、服务器层共同构成了三层体系。这里所说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也不仅仅有B/S应用才有三层体系结构,三层是指逻辑上的三层。通过引入中间层,将复杂的商业逻辑从传统的双层结构(Client-Server)应用模型中分离出来,并提供了可伸缩、易于访问、易于管理的方法,可以将多种应用服务分别封装部署于应用服务器,同时增强了应用程序可用性、安全性、封装复用性、可扩展性和可移置性,使用户在管理上所花费的时间最小化,从而实现了便捷、高效、安全、稳定的企业级系统应用。

1.3分层描述三层架构三层体系的应用程序将业务规则、数据访问、合法性校验等工作放到了中间层进行处理。通常情况下,客户端不直接与数据库进行交互,而是中间层向外提供接口,通过COM/DCOM通讯或者Http等方式与中间层建立连接,再经由中间层与数据库进行交互。当然数据通过中间层的中转无疑是降低了效率,但是它脱离于界面与数据库的完美封装,使得它的缺点显然不值得一提。 典型的三层结构分为表示(presentation)层, 领域(domain)层, 以及基础架构(infrastructure)层,而微软的DNA架构定义了三个层:表示层(presentation),业务层(business),和数据存储层(data access),当然J2ee 也有它不同的分法不过都大同小异吧。既然我用.net做的开发,这大三层我无需多说了,根据我的理解,我对此做了更详细的分层,界面外观层、界面规则层、业务接口层、业务逻辑层、实体层、数据访问层、数据存储层共七层,其具体的调用如图1所示: 图1由图1可以看出,虽然我将系统的架构分为七层,实际上大的方面来说,它就是一个典型的三层架构设计思想。单从这个图来看,数据的调用显得繁琐而抽象,也许这时候就会有人说,我只是想实现界面上与用户交互,然后根据用户的请求将数据读出/写入数据库就好了,为什么要做如此复杂的分层调用呢?从这个问句中我们也只看到了界面和数据库,也就是说从用户的需求来说,就是这两层而已,但是这里我们首先要搞清楚的是三层架构它主要是为程序员为了实现部署、开发、维护企业级数据库系统而服务的。如果我们在中间层实现了对表示层和数据库层的完全脱离,其部署、开发、维护系统的费用和时间至少降低到原来的一半,甚至更多。

1.4部署企业级数据库应用对于一个企业级数据库应用系统上的三层架构我是这样部署的:系统通过浏览器或应用程序客户端提供与用户的交互平台,并向服务器提交请求(界面外观层);用户提交请求后,界面规则层对用户的数据按照业务逻辑层要求的接口参数封装规则封装用户数据,然后调用业务接口层对外提供的相应命令接口(界面规则层),业务接口层通过对数据进行解析并分别送入不同的逻辑处理并向用户返回处理结果(业务接口层);对于数据和命令的不同,处理方式也不同,我们将不同的处理方式都归类,并将接口层传入的数据及命令流入对应处理流程(业务规则层);这时,不同的处理流程分析数据和命令产生出对应的一个实体,这个实体根据其本身的属性和方法以及上层传入的命令,将数据处理为数据访问层需要的接口参数,并向数据访问层提交访问数据库的请求,并向业务接口层返回访问结果(实体层);数据访问层会将数据转化为数据库可识别的语句(SQL),并访问数据库层,访问结果会返回给实体层(数据访问层);数据库层处理上层传入的SQL,读写数据库内置对象,并根据其内置对象本身的关系对数据做进一步校验和处理(数据库层)。这里我所讲到的企业级数据库应用系统,不论它是基于B/S应用系统上的三层架构设计,还是基于C/S应用系统上的三层架构设计,基本上是一样的,所不同的只是两种方式常用的数据传输协议的不同,B/S应用系统设计一般数据传递是通过HTTP来完成的,C/S应用系统设计则更多的是基于TCP/IP协议来传送数据的,当然,随着企业级应用系统对安全性方面要求的要求越来越高,更多的防火墙架设于物理线路之间,C/S应用系统的设计也越来越多地趋向于HTTP,典型的方式如: CLIENTàISAPI/CGIàServer Database; CLIENTàWebServiceàServer Database;既然提到这两种方式,我简单地提一下它们两者的区别及应用,它们的不同主要是中间层向客户端提供服务的方式不同,一般情况下这两种方式都需要架设专门用于受理客户端请求的Web Server,很明显,它更进一步地体现了三层架构的安全性。中间层基于ISAPI/CGI的方式可以说正在被Web Service方式所取代,这也正是面向对象思想的进一步应用。ISAPI/CGI向客户端提供的服务实际上是远程调用函数,数据一般由程序员自定义结构存储,并基于HTTP与Web Server交互,而Web Service向客户端提供的服务是远程调用类,常常采用XML存储数据,并基于SOAP与Web Server交互。两者的优劣势也很明显,前者较XML封装方式,数据量小,传输速度快,后者因为XML的臃肿速度上来说是它的劣势,不过它的安全性以及开发速度占有明显得优势。如果认真看图1中对各层的描述,不难看出,里面提到了工厂以及构造器,它是来自于设计模式中的一种思想。其中业务逻辑层的业务规则层、实体层就是运用设计模式的思想来实现的。

2. 设计模式思想的应用 2.1设计模式思想概述设计模式思想引入企业级数据库系统开发,与传统的开发模式可谓是一场革命.设计模式之于面向对象的设计与开发的作用就有如数据结构之于面向过程开发的作用一般,其重要性不言而喻。当然学习设计模式的过程也是痛苦的,对于GoF的23种设计模式要一一学懂它,无疑是非常痛苦的。面向对象系统的设计与分析实际上就是追求的两点:一是高内聚,一是低耦合。这也是我们软件设计所要追求的,无论是OO设计中的封装、继承、多态,还是我们的设计模式的原则和实例,都是主要为了追求这两点。有人说,我们的系统小,使用设计模式会束缚我们的实现,其实不然,就如K_Eckel在他所写的《设计模式精解》一书中提到的:设计模式体现的是一种思想,而思想是指导行为的一切,理解和掌握了设计模式,并不是说记住GoF的23种设计模式的设计场景以及解决方案,而实际接受的是一种软件设计思想的熏陶和洗礼,等设计模式的思想真正融入到你的思想中后,你就会不自觉得去采用设计模式的思想去设计你的系统,这才是最重要的。因此我并不想重复地去讲述这23种设计模式,更不会拘泥于其中的任何一种,我只是根据我的经验和对设计模式的思想的理解,来实现我的业务逻辑层的设计。我们在面向对象的设计中常常会遇到一些问题,比如说为了提高程序的高内聚低耦合,我们通常会抽象出一些类的公共接口以形成抽象基类,这样我们可以为它派生很多个子类,通过申明一个抽象基类的但被实例化为指向派生类的对象,以达到多态的目的。然而当业务复杂并产生了大量的派生类时,程序员就得记住每一个派生类的名字然后New出一个指向它的指针。这就给编写程序和维护代码带来了很大的困难,这种情况下我们如果要求客户端传入一个名称,我们用一个switch根据传入的名称来New一个子类,这就实现了中间层的封装。还有比如我的一个数据库系统中,有几百个表/视图等对象,要对它们进行访问,如果只用面向对象的思想去操作它们,我们需要把这些数据库对象都抽象为类,封装它们自己的属性和方法,这样的工作量无疑是非常巨大的。于是我利用设计模式的思想动态地分类抽象它们,也就是说,在访问它们之前,才产生具有实体意义的类。我们可以将几十个、几百个属性、方法类同的数据库表做成一个Template Class,这样的封装方式使得代码量减少到原来的几十甚至几百分之一,而且它最大的好处是脱离了数据库… …等等在面向对象设计中出现的问题我们大都可以用设计模式的思想去解决它,就如我们在c程序中遇到一些比较麻烦的功能时,就会想到用数据结构中的一些算法去解决它一样。

2.2数据库应用中设计模式的抽象说了这么多,我就举一个例子来说明如何在三层架构部署的企业级数据库应用系统中如何使用设计模式:数据库系统中我们最关心的就是如何操作数据库中的那些对象,我们可以将数据库中的对象看作是用来生产某一种产品的模具,每一种类型的对象就是一种模具,比如表、视图、存储过程,我们可以将它们当作是三种模具,当然你可以根据业务及数据库化分的更细一点,比如单表模具,主从表模具,视图模具、存储过程模具、数据库函数模具等等,不够的你可以去继续扩展;假使我们现在有一个工厂,它有好多个车间,每个车间只能够使用一种模具来生产产品,我们可以分别给它们起名字叫表车间、视图车间、存储过程车间等。当用户想要往USER表中插入一条记录的时候,我们可以说成是在工厂要在表车间使用表模具生产出一个叫做USER的产品,然后产品进行加工的过程。那生产并加工这个产品过程到底是怎么样的呢?这里我说明一下工厂、车间、模具、产品它们各自的功能以及在一个产品在产生和加工过程中所处的环节,事实上根据它们的名字也不难理解。工厂:它要存贮下所有的产品名和车间名以及产品名与车间的多对一关系,用户需要知道自己要生产的产品名字是什么,工厂根据产品名来判断送交给哪个车间去处理. 车间:车间使用它拥有的模具来产生一个具体产品模具:模具产生一个产品对象产品:进行自加工(插入、删除、修改、查询等) 那么,现在我们来看看当用户通过界面层的交互,想对表USER插入一条记录的过程:事实上用户并不知道它现在操作表叫做USER,而界面层上的对象则必须知道当前操作界面所对应数据库表的名字,有了这个已知条件,界面层调用业务接口层的提供的获取表信息函数接口【例如:DataSetGetTabInfo(string _tabname);//得到当前表的信息】,接口产生一个工厂,工厂就判断这个USER属于哪个车间生产,将USER转交给表车间,表车间产生一个表模具对象,并生产出一个名叫USER的产品对象,产品对象调用自己的获取信息函数【例如:DataSetGetTabInfo(string _tabname);//得到当前表的信息,并记录到产品对象属性中,实际上这个GetTabInfo过程调用了数据访问层提供的花取字段信息接口】,对本身做了一次加工,也就是说此时USER这个产品已经拥有了USER表的信息(字段、主键等),然后返回到业务接口层,业务接口层将这个具体的USER产品返回给界面层,界面层得到产品后,将数据填充到产品的属性(行和列)中,实际上就是增加一行给字段赋值的过程,然后再调用业务接口提供的插入数据接口【例如:InsertData(DataSet _tabinfo);】,同样的,接口产生工厂,工厂找到车间,重新构造产品,产品对象对本身做插入操作,返回。这就是一个完整的操作过程。当我真正地了解了GoF的《设计模式:可复用面向对象软件的基础》中的思想后,我突然发现真正如K_Eckel所说,经过了一场软件设计思想的洗礼,做系统设计时的思想发生了质的变化,封装、复用、多态、抽象……

相关文档
最新文档