我在派生类的不同实例中有共同的数据。 因此,为了共享公共数据属性,我在基类中将它们设置为静态。 但是静态公共属性不能在接口中声明。 如果我们尝试,我们会收到错误:
“无法实现接口成员,因为它是静态的。”
这种要求是否有任何已知的设计模式或最佳实践?
答案 0 :(得分:9)
最好使用抽象基类。
答案 1 :(得分:2)
接口定义了一个接口。只要你有任何“真实”,无论是方法实现还是共享数据,你都需要一个类,在这种情况下是一个抽象的类。
替代方案是保留接口,但添加单例以保存与实现接口的类相关的数据。如果您需要使用界面,那么我认为这是可行的方法。只需命名单例,就可以明显地将它逻辑地链接到接口和文档,接口的实现应该使用它。
在你的情况下,带有数据的静态类可能就足够了,而不是完整的单例实现,但我不会在这里讨论,整个“静态类与单例”是一个有争议的主题。