码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-08-05 00:00:28      阅读:545      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   使用   os   数据   for   

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都实现该接口,在该接口中定义增删改查方法。

bubuko.com,布布扣
 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 }
View Code

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

bubuko.com,布布扣
private IDal.IUserInforDal userInforDal=new PCITC.OA.AdoNetDal.UserInforDal();
        public UserInfor Add(UserInfor userInfor)
        {
            return userInforDal.Add(userInfor);
        }
View Code

 bubuko.com,布布扣

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

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

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

标签:style   blog   http   color   使用   os   数据   for   

原文地址:http://www.cnblogs.com/wanren/p/3890914.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!