首页 > 在面向对象编程中在使用到class的时候哪些class需要单例实现,哪些class不需要?

在面向对象编程中在使用到class的时候哪些class需要单例实现,哪些class不需要?

RT,
觉得在写web应用的时候基本上用到的class都是logic处理、操作,像是function的集合,这样的class需要单例以节省内存
ORM中返回的查找数据class不需要单例,一条数据是一个object,这样的class像是 c 中的struct ,像是class表现出来的数据集合


求各位大大高见!!!! :)


单例,顾名思义,就是只有一个实例

如果为现实建模,那么太阳、宇宙……就是单利。

看你的提问,说的是 web。那么,在 web 中,那些只有一个实例的,就是单利。

比如:

  1. 整个网站的全局设置。不管在哪个页面,哪个函数,哪个时刻,只要获取 GlobalSetting,都是唯一的实例,不会存在第二个。
  2. 数据库。Database 一般是单利,虽然我们可以有 N 个 Database 的连接,但是数据库连接是个非常耗时耗资源的操作,所以,主流 web 框架将 Database 设计为单利。

写web应用的时候基本上用到的class都是logic处理、操作

杀鸡焉用牛刀,任何设计模式都是为了更好的开发大型的、多人参与的、持久运行并维护的项目。如果是页面逻辑,那么前端控制器 FrontController 就应该是单利,然后将请求通过路由分配给其它的控制器。

ActionController 中,是业务逻辑,根据不同的业务,合理设计类。

像是function的集合

如果你的项目仅仅是function的集合,要么是你的项目太小,要么是你的项目代码需要重构。

如果真的是个别的 Utilities 类,就像 @mcfog 回答的,设计成静态类。


PHP的话,大概有几种场景


不知道你说的是不是php,
php里的的数据库或缓存,
如果不是单例,每次实例化都会连接一次资源,很耗时的,
如果改成单例,就只连一次了。
像php这种语言,每次请求后,资源都回收了,所以单例子的意义并不大。

【热门文章】
【热门文章】