Design patterns 当您知道一个类只有一个实例会被实例化时,该怎么办——单例、静态或普通的旧类?

Design patterns 当您知道一个类只有一个实例会被实例化时,该怎么办——单例、静态或普通的旧类?,design-patterns,static,singleton,Design Patterns,Static,Singleton,有些情况下,类没有成为单例或静态的内在原因,但创建多个实例也没有多大意义 我面临的示例是PHP页面中的“header”对象。它是一个自制类,帮助管理CSS/JS脚本(防止重复引用并管理一些依赖项),并在标题中呈现一组常见标记(元内容类型、标题、脚本、链接样式表等)。它是一个在所有视图中普遍使用的类,只是为了简化代码编写 因为一个页面只有一个页眉,所以这个类的实例超过一个是没有意义的。另一方面,使其成为静态/单例似乎也给它增加了一个没有理由的限制。这一切都归结于您为谁编码以及总体目标是什么。如果要

有些情况下,类没有成为单例或静态的内在原因,但创建多个实例也没有多大意义

我面临的示例是PHP页面中的“header”对象。它是一个自制类,帮助管理CSS/JS脚本(防止重复引用并管理一些依赖项),并在标题中呈现一组常见标记(元内容类型、标题、脚本、链接样式表等)。它是一个在所有视图中普遍使用的类,只是为了简化代码编写


因为一个页面只有一个页眉,所以这个类的实例超过一个是没有意义的。另一方面,使其成为静态/单例似乎也给它增加了一个没有理由的限制。

这一切都归结于您为谁编码以及总体目标是什么。如果要确保头类只能有一个实例,则必须将其作为单例编写,以确保只创建一次。然而,如果您不想以这种方式限制它,那么就没有必要将其作为单例编写

你的问题自己回答。如果您正在编写一些将被其他人使用的代码,并且它的功能取决于只有一个实例,那么将其编码为单例。如果您希望它保持打开状态,并且如果有多个实例,它不会影响代码功能,那么请保持原样。如果你是为自己写这篇文章的,那就取决于你想如何使用它


总而言之。单例强制只创建一个实例。只有当类的实例不能超过一个时,才应使用此选项。

这可能会有帮助。。。我会选择一个普通的老班级,我自己。单例-和静态,在较小的程度上-涉及做更多的工作,使您的类不那么灵活。如果您只需要一个普通的旧类,那么只需创建一个!你已经做了最少的工作,如果后来发现你需要多个实例,这个选项仍然对你开放。如果你写这个作为答案,你会得到25个代表。