oop - 当状态不可变时,静态类是否合适?

标签 oop static object-design

假设我有一个名为 WebsterDictionary 的简单类,它有一个可以接受单词并返回其定义的函数。也许还有另一个函数可以接受定义并返回一个单词。许多客户一直在使用该类。

为了方便查找,该类包含一个成员变量,它是一个内存中的字典,用于存储单词及其关联的定义。假设字典一旦初始化就永远不会改变——它是常量,不会因实例而变化。

这是静态类的良好候选者吗?我一直在读静态类应该是无状态的...但是这个类有状态(内存中的字典),对吗?

编辑:另外,如果这确实成为静态类,那么我什么时候初始化字典,因为不再有构造函数?每次调用静态方法之一时,我是否都会检查对字典的引用是否为空?

谢谢。

最佳答案

当功能不需要可替换时(例如用于测试),静态类适用。如果您可能想使用 stub 或模拟,您应该创建一个适当的接口(interface),然后使用单例实现它。

关于oop - 当状态不可变时,静态类是否合适?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/659148/

相关文章:

php - 对象引用

java - Java中共享数据和方法的正确方法

c++ - 设计具有部分通用实现的 C++ 类

Java-静态变量,但扩展子类不共享该值

具有通用结构的 C# 类设计

c++ - 强制派生类而不再次实现纯虚拟

oop - 在导入类时使用索引调用静态方法

c - 在函数内使用 const 和 static const 的速度有区别吗?

c - 为什么我不能用非文字值初始化静态变量?

PHP 面向对象问题