一步一步搭建开发框架(一)依赖抽象编程

1,从一开始学.NET变学了最简单的框架,三层框架,多层框架应用的也比较广泛。自从从事SharePoint开发以后,对.NET方面的知识都渐渐的遗忘了,ASP.NET和ASP.NET MVC也感觉越来越陌生,但一直感觉框架很优美,设计的很合理。晚上无聊的时候还是学一下!本来有一些疑惑的地方,写一写博客,从头到尾缕一遍,也会特别清晰!

2,常见的三层框架Dal层,Bll层,UI层!

3,(1)第一种变化:现在有这么一种情况,Dal层和数据库连接有可能用ORM框架,也有可能使用原生的ADO.NET!这个时候就有了一种变化,所以一定要充分利用C#的面向对象的特性,来封装这种变化。面对这种变化,尽量做到少修改代码或者不修改代码!将Bll层和Dal层的耦合关系降到最低!不管Bll层依赖AdoNetDal还是ORMDal一旦Dal层的实例发生变化,Bll都需要变化,这儿有一种思想叫依赖抽象编程!

(2),假设数据库中有UserInfor表,那么根据三层开发模式,就有UserInforDal.cs,UserInforBll.cs等类!面对不同的访问数据库的方式,又有了不同的类库,AdoNetDal,EFDal等类库,为了做到依赖抽象编程,降低Bll层和Dal层的耦合度,还需要有个类库IDal,其中包含,IUserInforDal.cs等接口。AdoNetDal,EFDal类库中的UserInforDal.cs都实现该接口,在该接口中定义增删改查方法。

 1 public interface IUserInforDal
 2     {
 3         UserInfor Add(UserInfor userInfor);
 4     }
 5
 6 namespace PCITC.OA.Dal
 7 {
 8     public class UserInforDal:IUserInforDal
 9     {
10         public UserInfor AddUserInfor(UserInfor userInfor)
11         {
12             DataModelContainer dbc = new DataModelContainer();
13             dbc.UserInfor.Add(userInfor);
14             dbc.SaveChanges();
15             return userInfor;
16
17         }
18
19         public UserInfor Add(UserInfor userInfor)
20         {
21             return null;
22         }
23     }
24 }
25 namespace PCITC.OA.AdoNetDal
26 {
27     public class UserInforDal:IUserInforDal
28     {
29         public UserInfor AddUserInfor(UserInfor userInfor)
30         {
31             return null;
32         }
33
34         public UserInfor Add(UserInfor userInfor)
35         {
36             return null;
37         }
38     }
39 }

此处的接口做到了,约束实例的方法名,在Bll层切换Dal层实例的时候,不必修改,只要更换实例即可!这样做到了Bll依赖数据库访问层的接口,只有当接口变化的时候,Bll层才需要变化。而Dal层的实例则可以任意变化,不会对Bll造成影响。抽象编程:Bll依赖一个不怎么变化的契约接口,而具体的实现无论怎么变化,都始终在接口约束范围内,不会对Bll造成影响!

private IDal.IUserInforDal userInforDal=new PCITC.OA.AdoNetDal.UserInforDal();
        public UserInfor Add(UserInfor userInfor)
        {
            return userInforDal.Add(userInfor);
        }

代码写到这儿算是比之前好了一点,但是还是不太完美,因为当需要更换具体Dal的实例时,我们还需要更改New的实例!程序中可能有很多地方都用到了这个实例,改动起来也比较麻烦!下一步就要解决这个问题!

一步一步搭建开发框架(一)依赖抽象编程,布布扣,bubuko.com

时间: 2024-10-19 01:46:40

一步一步搭建开发框架(一)依赖抽象编程的相关文章

依赖接口编程

//分层的思想:模块内部之间高内聚,模块外部之间低耦合 //当遇到跨数据库时候,数据库访问驱动层就会产生变化,就会直接影响采用高耦合使用该层的的代码块 //解决模块间高耦合的状况思路:利用接口或者抽象类来进行隔离,不再依赖具体的类的实现(new xxx) 依赖接口编程: //UserInfoDal userInfoDal = new UserInfoDal(); //这种直接new出DAL层的内容是一种高耦合,只要DAL层的类发生变化这里也会受到很多影响 //所以不应该依赖[UserInfoDa

一步一步搭建开发框架(二)工厂模式

1,从(一)说起,面对程序中很有地方都用到Dal层的实例,我们想到了,将创建实例写到一个单独的方法中,由这个方法来维护实例的变化,这样,当需要更改实例的时候,我们只需要更改一下这个方法即可,而不必在程序中到处修改!因此便有了简单工厂. 1 namespace PCITC.OA.DalFactory 2 { 3 public class DalFactory 4 { 5 public static IDal.IUserInforDal GetUserInforDal() 6 { 7 return

一步一步搭建开发框架(五)单元工作模式

1,单元工作模式主要为了提高与数据库的交互次数,提高应用程序效率.我们知道实际的业务操作中,有时需要好几张表一快保存,一块删除之类的逻辑,比如注册用户之后,用户表要加一条数据,积分表等与用户表有外键关系的表可能也需要保存数据,这样造成多次保存,也就是多次与数据库交互. 2,前边我把SaveChange()方法都写到了BaseDal里面,今晚上就把这个SaveChange方法提取出来!我们继续封装一个DbSession类,同时将抽象工厂的代码转移到这个DbSession类中. 1 namespac

一步一步搭建开发框架(三)基类基接口

1,AdoNetDal和EfDal都实现IDal这个接口,公共的方法写到接口中,接口中的代码! 1 namespace PCITC.OA.IDal 2 { 3 public interface IUserInforDal 4 { 5 UserInfor Add(UserInfor userInfor); 6 7 bool Update(UserInfor userInfor); 8 9 bool Delete(UserInfor userInfor); 10 11 int Delete(para

值得我们深入研究和学习:从零开始一步一步搭建坚不可摧的Web系统主流架构

本文标签: Web系统主流架构 搭建Web系统架构 缓存服务器 数据库架构   技术型初创公司  互联网杂谈 主题简介: 1.网站系统架构当前现状 2.Web系统主流架构解析 3.互联网技术团队初期组建经验分享 本文主要结合我之前在海尔电商平台和现在公司的一些实际架构经验,综合实际情况和个人的理解,跟大家分享一下搭建Web系统的一些常用的技术架构和应用技巧. 首先要跟大家探讨一个问题,就是当前传统IT企业或是传统企业的IT系统目前的系统架构是怎样的呢? 就我所经历的NEC软件.海尔集团.青岛航空

一步一步教你搭建基于docker的MongoDB复制集群环境

一步一步教你搭建基于docker的MongoDB复制集群环境 1.安装docker 2.创建MongoDB的Image 3.搭建MongoDB的集群 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中. 1.ubuntu14.04安装docker 参考文档 http://docs.docker.com/installation/ubuntulinux/ 参考文档 http://docs.docker.com/mac/started/ pc@pc-Th

一步一步实现混合驱动自动化测试框架的搭建

一步一步实现混合驱动自动化测试框架的搭建 实现功能: 登录126邮箱,添加联系人,然后发送邮件,带附件 数据驱动框架结构: Action: 封装的操作元素的函数,如login,添加联系人... conf: 日志配置文件 定位元素配置文件 数据库配置文件 PageObject: 一个页面是一个类,类的方法可以获取页面上的相关元素 ProjectVar: 工程路径 工程相关的全局变量 TestData:(文件或excel) 测试用例 测试数据 TestScript: 运行测试框架的主程序:入口,主要

一步一步搭建Svn+Apache环境(附源码包)

一步一步搭建Svn+Apache环境(附源码包) 看了很多网上的搭建方法,但是因为配置的svn和Apache的版本问题和网上写的教程的不完整等原因,阻碍了很多想要学习的朋友!!今天亲手搭建了一下Svn+Apache环境,并且详细记录了每一步搭建的细节,送给需要的朋友们! 软件版本: redhat6.4(64位) apr-1.5.1.tar.gz apr-util-1.5.3.tar.gz httpd-2.2.27.tar.gz sqlite-amalgamation-3.6.17.tar.gz

[ALM]一步一步搭建MS ALM环境 - 安装TFS + SQL SERVER

描述: 安装SQL SERVER 2012,安装TFS 2013,配置TFS,挽起袖子,准备干活儿 步骤: 1,打开Hyper-V Manager,参考[Hyper-V]使用操作系统模板创建新的虚拟机,先完成操作系统的安装,注意以下修改以下信息: 磁盘名称:tfs.vhdx 磁盘存储位置:x:\VMs\DC 虚拟机名称:TFS 使用现有的虚拟机磁盘:x:\VMs\DC\tfs.vhdx 选择使用内网网卡:InternalVirtualNetwork 内存大小:4096 MB 服务器角色:Team