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

时间:2011-04-19 18:24:55

标签: design-patterns static singleton

有些情况下,某个类没有固有的理由可以成为单例或静态,但在创建多个实例时也没有多大意义。

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

由于页面只有一个标题,因此拥有该类的多个实例是没有意义的。另一方面,使它静态/单独也似乎增加了对它的限制,没有理由。

1 个答案:

答案 0 :(得分:4)

这一切都取决于您编码的对象以及总体目标是什么。如果要确保头类只能有一个实例,那么将其写为Singleton是必要的,以确保它只创建一次。但是,如果您不想以这种方式限制它,则没有必要将其写为单例。

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

总结一下。单例ENFORCES只创建一个实例。只有在从不拥有多个类的实例非常重要时才应该使用它。

相关问题