当前位置:  开发笔记 > 编程语言 > 正文

方法返回一个接口

如何解决《方法返回一个接口》经验,为你挑选了2个好方法。

大家好,

我正在考虑这行代码

IDataReader myReader = questDatabase.ExecuteReader(getQuest);

我正在使用DAAB,但我无法理解方法ExecuteReader(DbCommand)返回IDataReader接口的意义和含义是什么.

任何人都可以解释,拜托



1> Pablo Retyk..:

它允许您使用DataReader而无需知道您正在使用哪种类型的DataReader(即SqlDataReader, OleDbDataReader, EtcDataReader),因此如果有一天您想要更改使用它的datareader不会影响您的逻辑,换句话说它会为您提供抽象.例如 :

您可以使用

IDbCommand command = GiveMeSomeCommand();
IDataReader r = command.ExecuteReader();

不知道您正在使用哪个提供商

有可能:

private static IDbCommand GiveMeSomeCommand()
{
    return new OleDbCommand();
}

或者它可以

private static IDbCommand GiveMeSomeCommand()
{
    return new SqlCommand();
}

管他呢.

编辑:

您也可以使用DBFactories.

DbProviderFactory factory = GiveMeSomeFactory();
IDbCommand command = factory.CreateCommand();
IDataReader r = command.ExecuteReader();

//and create more objects
IDataAdapter adapter = factory.CreateDataAdapter();
IDbConnection conn = factory.CreateConnection();

然后在其他层创建您的提供程序

private DbProviderFactory GiveMeSomeFactory()
{
    if(something)
        return SqlClientFactory.Instance;
    else if(somethingElse)
        return OracleFactory.Instance;
    else if(notThisAndNotThat)
        return MySqlFactory.Instance;
    else
        return WhateverFactory.Instance;

}


我真的非常感谢你们,我在你们的奉献精神中感到惊讶,在这样的社区中我们很有意思.谢谢大家

2> Binary Worri..:

该方法将返回一个对象,该对象是一个类的实例,并且该类将支持该类IDataReader.

关键是,对象的类型并不重要,只是该类实现了接口.

如果你正在开车,你不需要知道它是福特,还是丰田,你以同样的方式驾驶汽车.

驱动界面是一样的,一旦汽车支持界面,你就可以开车了.

同上IDataReader,一旦返回的类支持接口,就可以使用它.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有