不是一个具有所有静态成员/方法的类是一种单例设计模式吗?有这样的课程有什么不利之处吗?详细解释会有所帮助。
答案 0 :(得分:17)
这种类被称为monostate - 它与单身人士略有不同。
为什么要使用单独的而不是单身?在他们original paper的模式中,贝尔&克劳福德提出了三个推理(由我解释):
我必须承认,我没有发现任何这些特别引人注目的。另一方面,monostate绝对不比单身人士更差。
答案 1 :(得分:15)
答案 2 :(得分:2)
考虑一系列Logging类。它们都实现了“LogMessage(message,file,line_number)。有些向stderr发送消息,有些向一组开发人员发送电子邮件,有些在消息频率表中递增特定消息的计数,有些路由到/ dev / null在运行时,程序检查其使用的Logging技术的参数向量,注册表或环境变量,并使用来自合适类的对象实例化Logging Singleton,可能会加载最终用户提供的DLL来执行此操作。使用纯静态单身人士很难复制。
答案 3 :(得分:1)
具有所有静态成员/方法的类 一种单身设计模式
类 - 不是模式。当我们谈论课程时,我们可以说课程实现模式。
静态函数 - 不是成员函数,它们在全局函数上类似。也许你不需要任何课程?
引自wikipedia:
在软件工程中,单身人士 模式是一种设计模式 用来限制a的实例化 类到一个对象。
根据这个定义,您的实现不是单例实现 - 您不使用共同的想法 一个(或多个扩展定义)类实例 。
但有时(并非总是)使用具有所有静态函数和单例模式的类 - 没有有意义的差异。
答案 4 :(得分:0)
对于单例,所有构造函数都必须是私有的,因此您只能通过函数访问。但你非常接近它。