【初学者必读】让你明白什么是接口
2007-07-16 17:01
232 查看
接口在类型无关的应用上起了很大的作用,因为它定义的是一个对象必须拥有的属性与方法,而不管那个对象是啥类(当然那个类要实现这个接口)
举个例子,有这么一个类的方法,它的参数是一个Connection对象,返回了一个DataReader对象。。当我们直接用类,就必须考虑类型问题了。。.net Framework1.1默认提供了SqlClient|Odbc|OleDb三种,如果数据库是SqlServer的,我们的方法可能是这样的(仅是举例。。不要讨论其中实现的合理性。。):
public SqlDataReader ExecuteReader(SqlConnection connection)
{
SqlCommand command = new SqlCommand("select * from tab", connection);
return command.ExecuteReader();
}
可是有一天,领导说SqlClient不好玩,要换成OleDb的。。那你事情就来了。。你得满地找SqlClient相关的应用。。把它改成OleDb的。。结果这个方法就成了
public OleDbDataReader ExecuteReader(OleDbConnection connection)
{
OleDbCommand command = new OleDbCommand("select * from tab", connection);
return command.ExecuteReader();
}
如果我们在刚开始设计的时候应用了接口,那会写成
public IDataReader ExecuteReader(IDbConnection connection)
{
IDbCommand command = connecton.CreateCommand();
command.CommandText = "select * from tab";
return command.ExecuteReader();
}
这个方法没有任何一个地方描述了它是使用哪种类型的连接。。而是抽像成一堆接口。。。当你换成OleDb的时候。。一行代码都不需要修改。。节省了大量的成本。
接口的应用还有许多。。研究研究就懂了
举个例子,有这么一个类的方法,它的参数是一个Connection对象,返回了一个DataReader对象。。当我们直接用类,就必须考虑类型问题了。。.net Framework1.1默认提供了SqlClient|Odbc|OleDb三种,如果数据库是SqlServer的,我们的方法可能是这样的(仅是举例。。不要讨论其中实现的合理性。。):
public SqlDataReader ExecuteReader(SqlConnection connection)
{
SqlCommand command = new SqlCommand("select * from tab", connection);
return command.ExecuteReader();
}
可是有一天,领导说SqlClient不好玩,要换成OleDb的。。那你事情就来了。。你得满地找SqlClient相关的应用。。把它改成OleDb的。。结果这个方法就成了
public OleDbDataReader ExecuteReader(OleDbConnection connection)
{
OleDbCommand command = new OleDbCommand("select * from tab", connection);
return command.ExecuteReader();
}
如果我们在刚开始设计的时候应用了接口,那会写成
public IDataReader ExecuteReader(IDbConnection connection)
{
IDbCommand command = connecton.CreateCommand();
command.CommandText = "select * from tab";
return command.ExecuteReader();
}
这个方法没有任何一个地方描述了它是使用哪种类型的连接。。而是抽像成一堆接口。。。当你换成OleDb的时候。。一行代码都不需要修改。。节省了大量的成本。
接口的应用还有许多。。研究研究就懂了
相关文章推荐
- 【初学者必读】让你明白什么是接口
- 安卓初学者笔记(四):用白话讲明白Activity是什么
- 接口到底是什么(一语道破)
- 抽象类(abstract class)和接口(interface)有什么异同?
- 没人教的项目管理方法之(明白该干什么) 二、项目章程如何写(上)
- 什么是JAMMA 标准,很奇怪的名字,我看很多人的电路板都做成这种大间距的金手指接口
- 430单片机外围为什么要接8M晶振,它的作用是什么??、初学者多指教
- 短信提醒接口在生活中具体能够做什么
- 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )
- 什么是MVC模式?您明白它的原理吗?很详细的讲解。
- 基本明白了什么是冲突域和广播域
- 【.NET版月经问题】之一【接口有什么用】
- 接口和抽象类有什么区别
- Ajax学习笔记(一)—什么是Ajax?(初学者)
- 接口和抽象类有什么区别
- 接口和抽象类有什么区别
- 接口和抽象类有什么区别
- 【产品思想】让你通俗地明白什么是真正的互联网平台
- 不懂接口、反射、委托、设计模式足足写了5年的代码 -- 写给初学者(谈美女生成器不谈代码生成器)
- Ajax学习笔记(一)—什么是Ajax?(初学者)