略论bs架构设计的几种模式
1:petshop
采用工厂模式。用一堆接口彻底把数据层的实现封装起来,工厂类通过读取读配置文件的设置产生具体实现。
接口应该在需求分析阶段讨论出来,然后大家带着这一堆接口便可以各做各的事了,做数据库的专门做数据库,只要实现那些接口就行。表示层和业务层的只需要调用接口就可以了,通过工厂类创建具体实现,根本不用考虑用什么样的数据源。
如果想换个数据库,甚至换成xml存储数据,只需要添加相应的类来实现这些接口,然后在配置文件中稍加改动即可,方便。
各层之间通过各种设计好的专门负责存储数据的model类传递数据。
简单明了。
这种方法通过接口把实现和表示彻底分离,两边都完全依赖接口,接口可谓责任重大,如果中途接口需要改动,影响会比较大,不过只要需求做好了 ,应该不会出现这种问题。
2:duwamish
3《asp.net高级应用:提出问题,设计方案,解决问题》(书名好象是这样的)讲的一个例子:
感觉这个例子设计的数据层灵活到了极点,它把数据分成不同的实体,每个实体都有插入,删除,创建,更新(至少有其中之一),所有操作通过存储过程完成。实体与存储过程之间的这种关系以及存储过程的参数信息都放到配置文件中,启动时加载到内存,当然有一系列的类来存储这些信息。
然后只用一个类便可以执行所有存储过程!!
这个类是个基类,可以派生不同子类完成不同数据库的存取工作。
这个类接受实体类的基类(所有实体类从中派生)和操作(Insert update create delete)做为参数,然后自动去找相应的存储过程和参数信息,然后利用反射从实体类中去找参数的value(当然参数对应的类中的field名也是事先存好了的),然后执行存储过程,结果同样保存在这个实体类中!
转载于:https://www.cnblogs.com/SupperCabbage/archive/2005/04/13/136733.html
略论bs架构设计的几种模式相关推荐
- 转载:应用软件系统架构设计的“七种武器”
本文章转载自:应用软件系统架构设计的"七种武器"(http://space.itpub.net/12639375/viewspace-167369) 在此向原作者本人表示感谢. ( ...
- 《.NET应用架构设计:原则、模式与实践》新书博客--试读-1.3 架构设计中的重要概念...
1.3 架构设计中的重要概念 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&quo ...
- 系统架构设计的原则和模式
1 分层架构 分层架构是最常见的架构,也被称为n层架构.多年以来,许多企业和公司都在他们的项目中使用这种架构,它已经几乎成为事实标准,因此被大多数架构师.开发者和软件设计者所熟知. 分层架构中的层次和 ...
- 《.NET应用架构设计:原则、模式与实践》新书博客--试读-持续更新
新书目录: 前言 第一部分 架构与设计的原则和模式 第1章 架构与设计的流程和核心概念/2 1.1 正确认识软件架构/2 1 ...
- 架构设计:一种远程调用服务的设计构思(zookeeper的一种应用实践)
在深入学习zookeeper我想先给大家介绍一个和zookeeper相关的应用实例,我把这个实例命名为远程调用服务.通过对这种应用实例的描述,我们会对zookeeper应用场景会有深入的了解. 远程调 ...
- [转]应用软件系统架构设计的“七种武器”
作者:张明星 出处: dev2dev.bea.com.cn 对于软件架构这一概念,有太多的版本,目前在业界由大师级人物或组织提出的对这一概念的阐述就超过十种以上,我个人比较赞同RUP(Ra ...
- 应用软件系统架构设计的“七种武器”
对于软件架构这一概念,有太多的版本,目前在业界由大师级人物或组织提出的对这一概念的阐述就超过十种以上,我个人比较赞同RUP(Rational Unified Process)中对软件架构的定义,即软件 ...
- 【转帖】应用软件系统架构设计的七种武器
[意]:本文为转帖,纯属学习之用,如侵犯了您的权利,请通知本人立即删除 来源:http://biostar.blog.sohu.com/80149258.html 对于软件架构这一概念,有太多的版本, ...
- java 单例模式 泛型_设计模式之架构设计实例(工厂模式、单例模式、反射、泛型等)...
设计模式, 架构设计实例, 使用到了工厂模式.单例模式.反射.泛型等 项目包结构如下图: 1.bean包 (1)Base.java父类 package test.bean; public class ...
最新文章
- 烂泥:php5.6源码安装及php-fpm配置与nginx集成
- 赵立新主持机器人_《档案》第二任主持人赵立新:我是石凉接班人
- 基础知识——密码学笔记(一)
- ASP.NET备份与还原SQL Server数据库
- MyEclipse+Tomcat web项目改名
- DCFramework 动态分布式计算框架(01)-- 基础结构
- python面试题(6)--- read、readline和readlines的区别
- js实现几种依次打印1的方法
- error: member “torch::jit::ProfileOptionalOp::Kind“ may not be initialized
- oc21--super
- 关于GIS/RS的一些网站和论坛
- 每日一句20191104
- Atitit 未来数据库新特性展望目录1. 统一的翻页 21.1. 2 Easy Top-N
- 查看linux系统端口占用情况
- 聚类算法——KMeans(K-均值)
- 超声非线性成像-谐波成像基本知识
- P2E游戏+保护濒危动物是否值得一玩,链游Pettoverse全面分析
- 普渡大学计算机科学在美就业,优势背景助力美国普渡大学计算机科学CS本科申请!...
- java导出word表格 行列合并
- 手机号 电话号码 邮箱 验证
热门文章
- 免費玩雲端運算,Amazon Web Service 雲端運算平台攻略 【1】
- C# 代码生成器 amp; 网站架构设计
- 面向Linux的10款最佳剪贴板管理器
- Bootstrap 3 移除输入框聚焦线 How to remove border (outline) around text/input boxes?
- Magento教程 20:仅限会员留言的产品评论设定!
- 国外PHP学习网站书籍资料汇总
- 深度学习(batch,mini-batch,其它算法)
- 斗地主AI算法——第十三章の主动出牌(2)
- Mycat配置文件schema.xml的详解
- 【AI视野·今日NLP 自然语言处理论文速览 第十二期】Tue, 22 Jun 2021