当您可以只使用静态方法而不需要这样做时,用实例 getter 编写单例有什么意义?
这是我只用静态方法编写的事件处理程序单例的简化版本:
class EventHandler {
private:
static std::vector<std::function<void()>> m_events; //implemented in cpp
public:
EventHandler() = delete;
static void addEvent(std::function<void()> evt) { m_events.push_back(evt); }
};
对我来说,只有静态方法似乎更简单直观,因为
EventHandler
的目的是限制对通常是全局的方法和变量的可见性。编写私有构造函数、非静态方法和变量以及公共实例 getter 有什么好处?
单例相对于“静态类”的一个可能优势是可以使用
const
。提高表现力