我已经看过几次提到这个,我不清楚这是什么意思.你何时以及为何会这样做?
我知道接口有什么作用,但事实上我不清楚这一点让我觉得我错过了正确使用它们.
如果你这样做是这样的:
IInterface classRef = new ObjectWhatever()
Run Code Online (Sandbox Code Playgroud)
你可以使用任何实现的类IInterface吗?你什么时候需要这样做?我唯一能想到的是,如果你有一个方法,你不确定除了实现之外将传递什么对象IInterface.我想不出你需要多久做一次.
另外,你怎么能写一个接受实现接口的对象的方法?那可能吗?
(在.NET的背景下,它的价值)
我倾向于不使用继承,很少使用接口.我遇到了一个认为接口是自吐以来最好的东西的人.他到处使用它们.我不明白这一点,因此接下来的问题.我只想检查一下我对接口的理解.
如果您在任何地方使用接口,我假设您可以预测未来,您的应用程序要求已经确定,并且应用程序中的任何内容都不会发生变化.对我来说,特别是在早期开发过程中,界面变得拖累.该应用程序在其生命中非常有活力.如果你需要减去或添加成员到界面,很多东西都会破坏.上面的人说他创建了另一个界面来处理新成员.什么都没有打破.
那不是那个构图吗?为什么不使用没有接口的组合?更灵活.
他如何处理必须从界面中减去成员的情况?基本上他没有.事情刚刚破裂,这很好,因为现在你可以看到所有受影响的区域并修复它们.我们应该通过暴力破解掉部分类,而不是更优雅地找出所有相关代码路径的位置?
我认为软件应用程序是一个图形.完整的图表是最坏的情况,具有n(n-1)/ 2.这意味着每个班级都与每个班级交谈.令人困惑的蜘蛛网.n-1是最好的,它们是严格的沟通等级.添加另一个接口只是为了补偿一个新的需要成员,为图形添加一个vertici,这意味着更多的边缘和更强的n(n-1)/ 2方程的实现.没有接口的组合更像是mixins.只有选择类使用特定方法.使用接口,所有类都被迫使用成员,即使他们不需要它们.组合/混合方法不会添加新的不需要的边.
在过去的几天里,我正在使用各种数据库,如MySQL,oracle,Ibmdb2等,通过odbc提供商与dot net连接.
例如:
1)MySQL:
Driver={MySQL ODBC 5.1 Driver};server=**********;uid=**;database=**;port=***;pwd=***;"
2)oracle:
Driver={Microsoft ODBC for Oracle};server=**********;uid=**;database=**;port=***;pwd=***;"
3)Db2:
Driver={IBM DB2 ODBC DRIVER};server=**********;uid=**;database=**;port=***;pwd=***;"
Run Code Online (Sandbox Code Playgroud)
现在我的问题是
是否可以为任何数据库提供程序编写泛型类
Driver={My own driver};server=**********;uid=**;database=**;port=***;pwd=***;"
Run Code Online (Sandbox Code Playgroud)
它只是通过更改web.config中的驱动程序名称并将该dll文件放在我发布的Web应用程序或网站项目的bin文件夹中来连接每个数据库.
.net ×2
interface ×2
c# ×1
composite ×1
database ×1
dll ×1
graph-theory ×1
inheritance ×1
oop ×1