C# interface 理解 数据库统一接口

 http://www.cnblogs.com/william-ren/archive/2007/12/12/992160.html   从此处转,修改后便于理解。


C# interface的一点使用总结

1 一个类可以实现一个以上的接口;

2 类必须实现接口中的“所有”属性和方法;

3 属性和方法定义所采用的格式必须与接口定义所采用的格式完全相同。方法所采用的参数数目及参数类型必须与接口中的完全相同。方法的名称也必须相同。

接口之间的继承:接口的继承仅仅说明了接口之间的继承关系,派生的接口继承了父接口的成员说明,没有继承父接口的实现。private和internal类型的接口不允许继承。如果派生接口中准备重写父接口的方法,实现方式同类的继承成员的覆盖。

如果一个类实现了某个接口,即使父接口没有在类的基类表中列出,这个类也隐式地继承了接口的所有父接口。

 

using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;

namespace  Phoenix.test.DoData
{
        
public   interface  IDataOperate
        {
            
string  Insert();
        }
      
// 类封装,接口作为成员字段,实现接口统一访问
      
// 工厂模式
         public   class  DataOperate
        {
            
private  IDataOperate iDataOperate;
           
            
public  DataOperate( string  dataBaseName)
            {
                
switch  (dataBaseName)
                {
                    
case   " sql " :
                        iDataOperate 
=   new  DoData.DoSql(); // 实例化为接口类 DoData.IDataOperate
                         break ;
                    
case   " access " :
                        iDataOperate 
=   new  DoData.DoAccess(); // 实例化为接口类DoData.IDataOperate 
                         break ;
                }

            }
            public string Insert() { return iDataOperate.Insert(); }
        }
        
         
public   class  DoAccess : IDataOperate
        {
            
public   string  Insert()
            {
                
// 实现ACCESS插入的代码;
                 return   " access " ;
            }
        }

        
public   class  DoSql : IDataOperate
        {
            
public   string  Insert()
            {
                
// 实现SQLServer插入的代码;
                 return   " sql " ;
            }
        }
     
    }

 

 

调用示例

using  System;
using  System.Collections;
using  System.Collections.Generic;
using  Phoenix.test.DoData;

namespace  Phoenix.test
{
    
class  class2
    {
        
public   static   void  Main()
        {
            DataOperate dataOperate 
=   new  DataOperate( " sql " );     // 实例化构造函数
             Console.WriteLine(dataOperate.Insert());
            Console.ReadKey();
        }
    }
}

 

 

当然这里处理你可以使用反射来创建相应的类.
在封装组件的时候,使用者在调用方法的时候,不需要知道究竟是用什么数据库对象,只需要调用接口来得到数据库处理方法就可以了。

 

转载于:https://www.cnblogs.com/fire-phoenix/archive/2010/03/29/1700105.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值