Grey Sand

学习与积累

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我声明一个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类,作为中间加工厂,里面是代码较少的静态方法,里面主要实现上面两句.

posted on 2007-09-20 13:03  leon1005  阅读(599)  评论(6编辑  收藏  举报