接口在数据访问层的通常用法

我声明一个IUser这样的接口,只有一个方法就是获取用户名称

public   interface  IUser 

      
string getUserName(); 
}
 


业务逻辑在使用时只对接口进行操作string UserName=user.getUserName();(user是IUser类型)
好,假设我当前要实现的是对SqlServer进行操作读取用户名称

public   class  SqlUser:IUser 

      
public string getUserName(){.} 
}
 

 

如果有一天要换成Oracle的话怎么办呢?如果是你的业务逻辑在调用用户名称都是针对接口编程的话,那么很简单,你只要加一个实现类和更改你的配置即可

public   class  OracleUser:IUser 

      
public string getUserName(){.} 
}
 


你的业务逻辑一字也不用动。

 

**说明一下,通常是这样创建IUser类型:

建立一个具有实际操作的类的实例,然后把该实例显式转换成对应的接口类型,如下:

 

SqlUser sqluser  =   new     SqlUser();

IUser user 
=  (IUser)sqlUser;

 

照这样思考,如果改成了Oracle数据库,除了修改实现的类,还要修改以上两行代码,通常的做法是建立一个Factory类,作为中间加工厂,里面是代码较少的静态方法,里面主要实现上面两句.

转载于:https://www.cnblogs.com/leon1005/archive/2007/09/20/899815.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值