问个关于接口和静态方法的问题~为什么不能用接口来规定需要实现的静态方法呢?

向ET同志学习 2010-11-02 05:34:57
如题,如何才能规定某个类必须实现某些静态方法呢?

但我现在确实需要这样的功能。
因为我们的项目现在数据源是什么都还不确定,有可能是数据库,也有可能是自定义的xml文件。
因此我想制定一个统一的访问数据的接口 IDataAccess,继承该接口的类访问数据源时使用静态方法,如getIPbyID(string ID)
目前使用SqlServer2005作为数据源,只需在 实现一个类,这个类继承该数据访问接口IDataAccess,并 使用访问SqlServer的方式来实现 getIPbyID等函数,下次如果 把数据源换成 XML 了,只需要重新实现一个类,并继承这个访问接口就行了。
...全文
270 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrsupersky 2012-02-22
  • 打赏
  • 举报
回复
说实话,singleton模式不就是静态使用的一种体现吗?
而且显然,如果没有这个模式,而是从静态角度入手,说不定往往会是问题更容易被解决。
向ET同志学习 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sp1234 的回复:]

实际上这可以考验GOF的设计模式,如果他们那个时候懂未来的.net以及java新版本会出现static类和static方法,就不会仅仅弄了“singleton模式”出来。
[/Quote]
~谢谢哈~但是按你的方法在 数据访问时 还是需要将后边写的那个类给实例化了。
你给的方式很新颖勒~~!果然还是得跟做技术的人交流才能提高~!
  • 打赏
  • 举报
回复
实际上这可以考验GOF的设计模式,如果他们那个时候懂未来的.net以及java新版本会出现static类和static方法,就不会仅仅弄了“singleton模式”出来。
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dongxurr123 的回复:]
引用 4 楼 vrhero 的回复:

抽象类...接口不是干这种事的...


抽象类也解决不了,因为是静态函数,抽象类中就得有函数体,在继承的类中,即使不实现他们,也不会报错```
我大方向错了,就不该用静态滴~~~
还是感谢。
[/Quote]

可以用来实现一些功能,但是当你使用接口来作为某一类工程方法的规范定义,就要多一层实现从对象方法到类库方法包装。对于原来每一个static class,你可以再写一个class,它实现了这个接口,然后其实现接口的每一个方法都是再去调用static class中的方法。
向ET同志学习 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vrhero 的回复:]

抽象类...接口不是干这种事的...
[/Quote]

抽象类也解决不了,因为是静态函数,抽象类中就得有函数体,在继承的类中,即使不实现他们,也不会报错```
我大方向错了,就不该用静态滴~~~
还是感谢。
vrhero 2010-11-02
  • 打赏
  • 举报
回复
另外关于静态方法...静态方法是实例无关的,只应该与类型有联系...

“规定某个类必须实现某些静态方法”很简单,设计文档一句话的事...关键是你这么做的目的是什么?若只为...
[Quote=引用楼主 dongxurr123 的回复:]
因此我想制定一个统一的访问数据的接口 IDataAccess,继承该接口的类访问数据源时使用静态方法,如getIPbyID(string ID)
目前使用SqlServer2005作为数据源,只需在 实现一个类,这个类继承该数据访问接口IDataAccess,并 使用访问SqlServer的方式来实现 getIPbyID等函数,下次如果 把数据源换成 XML 了,只需要重新实现一个类,并继承这个访问接口就行了。[/Quote]
不需要也不应该用静态方法...
vrhero 2010-11-02
  • 打赏
  • 举报
回复
抽象类...接口不是干这种事的...
  • 打赏
  • 举报
回复
接口是面向对象的,目前只能用于定义对象,例如在“管道工”类中一个方法
public void 打洞(IHole x)
{
....
}
那么凡是它知道的洞他都会打。这里,x变量引用的是一个对象。
向ET同志学习 2010-11-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]

接口不是技术概念,你还不理解接口也不适合使用...先去学学软件工程...
[/Quote]
那我现在需要实现 这样的功能:规定某个类必须实现某些静态方法,怎么办呢?
不好意思,本科学的数学,没学过软件工程
vrhero 2010-11-02
  • 打赏
  • 举报
回复
接口不是技术概念,你还不理解接口也不适合使用...先去学学软件工程...

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧