2010-08-04 63 views
1

我需要创建一组静态类,它们都需要实现相同的方法。我想找到一种方法来迫使他们如此。如何强制静态类来实现特定的方法?

我知道静态类不能派生除System.Object以外的任何东西。我应该使用非静态方法吗?它可能是,但这个类的方法都不会使用实例属性...

我最好的照片是我应该使用单例。然后我会使用一个实例,但至少我不会在每次需要使用方法时都强制实例化类。

你有什么建议吗?

编辑:

我不会实现这些方法。我需要强制其他开发人员实现具有特定签名的特定方法。所有的签名对于每个班级都是一样的。而已。

想象一下,您有一个静态类,可从办公室的数据库获取记录。你有几种方法来做到这一点。由于这些方法都没有共享变量,所以它们被标记为静态,类也是如此。

现在,您和您的团队中的其他开发人员必须对其他数据库或甚至不受您控制的API执行相同操作,这并不重要。你想强迫你的同事用相同的签名完全相同的方法来实现所有这些类。

您的意见总是欢迎,但现在我只想找到最接近的方式来做到这一点。

我可以使用一个抽象类,从其他所有其他人将继承。但是由于这些方法不分享任何东西,所以我宁愿不在每次需要时都实例化类。

这就是为什么我提到使用单例模式。我不应该这样做吗?

+4

为什么你需要静态类来实现特定的方法?您通常需要特定方法的原因是启用多态性,即能够传递可以被视为相同的不同类型对象的实例。这样的概念对静态类没有意义,因为没有静态类的实例。 – 2010-08-04 22:16:26

+2

你能解释一下为什么你想让静态类都有相同的方法可以帮助别人给出更多的建议。 (现在我想不出为什么有人会这么做!) – MikeG 2010-08-04 22:16:32

+0

@ Mike G ...确切地说!!!! – IbrarMumtaz 2010-08-05 00:47:13

回答

0

如果我正确地阅读你的问题,单例将不会工作,除非你的方法有很多重载。

虽然我们谈论接口和基类等,但如果您控制代码,是否有一个原因,您不能只制作一组实现所需方法的类?当然,你需要记录你所做的事情和原因,但除了坚持“惯例”,你是否有这样做的原因是而不是

如果您使用Static Classes,它不会继承System.Object以外的任何内容,并且不实现任何接口,那么无论如何您都不能调用它们。

编辑 根据您的编辑,它看​​起来像你想执行什么应该是通过代码本身的编码策略。每个开发商都有自己的政策,程序和标准,从文档到项目布局,再到方法签名。我目前的客户对方法签名非常严格,因为我们将很多事情传递给BizTalk,并且很难改变BizTalk解决方案,因为有人不想遵循团队其他成员使用的模式。

如果你的团队中的成员正在编写这些静态类和静态方法,我没有看到一个理由(超出可能的办公室政治)为什么你不能通过实施策略来做到这一点。

如果你必须通过代码做到这一点,我认为你坚持接口和实例方法。如果你想要,一旦创建了这些实例方法,你就可以编写静态辅助类作为包装器(因此,你个人不必每次都要实例化对象),但是我不知道那会是什么给你任何东西。

+0

我想这样做的原因是我不会实现所有有问题的类。 我不需要重载任何东西,因为方法接受一个变量,它是一个类的实例,其属性是允许的选项。 你最后一段的含义是什么?我无法互换地调用静态类中的方法吗?拨打1,2,然后3,然后2?我搜索谷歌翻译的那个词,但不知道你的意思。阅读问题的编辑部分。谢谢! – 2010-08-05 22:21:01

+0

@Fabio Milherio:如果我通过方法DoStuff()调用'static class Foo'并用方法DoStuff调用'static class Bar',我仍然需要指定我需要的类:'Foo.DoStuff()'或' Bar.DoStuff()' – AllenG 2010-08-05 22:28:12

相关问题