是不是很好,每个PHP类都实现一个Singleton模式?我认为,由于它会减少内存使用量。这是对的意见吗?谢谢!是不是很好,每个PHP类实现一个Singleton模式
1
A
回答
10
软件旨在模拟现实。这就是OOP的存在方式。说,辛格尔顿不是所有钉子的锤子。你可以在某些模型中使用它,但也有其他的模块根本无法调整。
以建模人员列表为例。如果您决定创建一个Person类,那么您将不允许您的模型拥有多个人。
1
有一个简单的规则:如果确定某个类只能使用一次,请实现Singleton。如果需要多次使用,请不要这样做。
如果你的程序只有一个单一实例的类,它看起来像一个主要的代码气味,不适合面向对象编程。
8
如果你所有的类都是单身人士,为什么要使用类?
单身在某些情况下是有用的,但往往是过度使用。如果你可以脱离单身人士,那么你可能不需要为他们预期的面向对象的用途而使用类。不过,它们仍然可以用于代码模块化。
一般来说,当你有多个类的实例时,类是最有用的。类是对象的蓝图,因此您可以创建许多具有类似行为但通常具有不同内部状态的对象。
所以,如果所有的类都是单身,我会退后一步,问了几个问题:
- 你需要的课?
- 您是否正确思考了您的软件如何模拟您正在尝试解决的问题?
1
这似乎是一个非常糟糕的主意。我建议在会话(如果是每个用户)或缓存(如果是每个服务器)之间保留你需要的任何数据。至于内存的使用情况,它不应该使与有很大不同。
0
其实它是(结合工厂),以Kohana 3 Framework为例;
它使用单件/工厂组合,只要有可能。
0
这是可能的,它只是不会是面向对象设计。 OOP是,意思是,以简化3个主要属性的结构:继承(即共同的类共享相同的接口),多态性(即子类化)和封装(即对你的对象有一个黑盒子方法)。
单身人士,虽然他们可以被扩展和抽象,通常不是基本上把OOP好东西放在你的范围之外。这将是一些原始程序化编程与全球范围内的所有命名空间。
相关问题
- 1. 这是Singleton模式的一个很好的用法吗?
- 2. Singleton模式是RedissonClient的一个很好的用例吗?
- 3. 这是一个很好的实现gameloop
- 4. 不是一个Singleton
- 5. 这是一个很好的数据模型来实现强类型角色吗?
- 6. 什么是一个很好的项目来学习现代模式和实践?
- 7. 是否有一个很好的设计模式来实现可选功能?
- 8. NHibernate和状态模式持久性 - 一个很好的实现?
- 9. MySQL + PHP:实现一个好的模型
- 10. Spring ACL是一个很好的ACL实现吗?
- 11. SQL中的单行表:这是一个很好的实现吗?
- 12. Erlang中一个很好的OpenID实现?
- 13. 在同一个文件中声明新的类是不是很好的“形式”?
- 14. 实现一个“LazyProperty”类 - 这是个好主意吗?
- 15. 基于类型创建唯一标识是否有一个很好的模式?
- 16. 灰烬混入 - 这是一个很好的方式,实现“动态”布局
- 17. 这是装饰者模式的一个很好的用法吗?
- 18. 这是一个很好的装饰模式的JavaScript?
- 19. Maybes是scala的一个很好的模式吗?
- 20. Flyweight模式的一个很好的例子是什么?
- 21. 这是一个很好的例子为策略模式
- 22. Javascript命名空间 - 这是一个很好的模式吗?
- 23. 这是一个很好的策略模式用例吗?
- 24. 这是一个很好的位置数据库模式
- 25. 一个很好的方式来实现l.php像Facebook一样?
- 26. 在一个文件中有多个类定义是不是很好的做法?
- 27. 使用一个很好的SQL查询而不是PHP代码
- 28. 这是一个很好的设计Scala API的返回类型模式吗?
- 29. 这将是一个很好的模式进行分类基于层次对象
- 30. “类不是一个模板”
谢谢大家!我得到了答案。我的问题是不正确的。 – Sbioko 2010-03-23 14:57:25