1

我需要创建一组静态类,它们都需要实现相同的方法。我想找到一种方法来强迫他们这样做。

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

我最好的办法是我应该使用单例。那时我将使用一个实例,但至少我不必在每次需要使用方法时都实例化该类。

您建议的替代方案是什么?

编辑:

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

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

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

您的意见总是受欢迎的,但现在我只想找到最接近的方法。

我可以使用所有其他人都可以继承的抽象类。但是由于这些方法不共享任何东西,我不希望每次需要它们时都实例化该类。

这就是我提到使用单例模式的原因。我不应该这样做吗?

4

1 回答 1

0

如果我正确阅读了您的问题,那么除非您的方法有很多重载,否则单例将无法工作。

当我们谈论接口和基类等时,如果您可以控制代码,是否有理由不能只创建一组都实现所需方法的类?当然,您需要记录您所做的事情以及为什么,但除了坚持“惯例”之外,您还有理由这样做吗?

如果您使用的是静态类,它不继承 System.Object 之外的任何东西,并且不实现任何接口,那么无论如何您都不能互换地调用它们。

编辑 根据您的编辑,您似乎正在尝试通过代码本身执行应该是编码策略的内容。每个开发车间都有自己遵循的政策、程序和标准,从文档到项目布局,再到方法签名,无所不包。我当前的客户对方法签名非常严格,因为我们在 BizTalk 之间传递了很多东西,并且仅仅因为有人不想遵循团队其他成员正在使用的模式而更改 BizTalk 解决方案是一件痛苦的事情。

如果您的团队成员正在编写这些静态类和静态方法,我看不出有什么原因(除了可能的办公室政治)您不能通过实施策略来做到这一点。

如果你必须通过代码来做到这一点,我认为你会被接口和实例方法所困。

如果您愿意,一旦创建了这些实例方法,您就可以将静态帮助程序类编写为包装器(因此,您个人不必每次都实例化对象),但我不知道这会给您带来什么。

于 2010-08-04T22:21:48.283 回答