我目前正在开发购物车,我在其中使用自定义Mysql类向db发送查询。
在这个项目中,我计划为我将使用的每个Object扩展这个Mysql类:Category,Product,Shopping Cart。
如果我创建一个类似这样的类:
class Catalog_Categories extends Mysql{}
然后是另一个这样的人:
class Catalog_Products extends Mysql{}
这些类是使用相同的Mysql对象在数据库上连接还是使用2个独立的连接?
我有点失落。
谢谢!
卡尔。
答案 0 :(得分:2)
这取决于你的Mysql类是如何编写的。如果使用Singleton模式编写它,它将维护一个数据库实例。您可以将其编写为Factory模式,并为每个使用它的对象生成一个新实例。还有许多其他模式和可能性,因此它们只取决于您希望它如何工作以及您如何编写自定义Mysql类。
答案 1 :(得分:1)
假设您在Mysql
类中创建数据库连接,每个对象您创建的任何扩展类,都将创建一个新的数据库连接。
有几种方法可以避免这种情况,例如,您可以创建一个与数据库的全局连接,并将该连接传递给类的构造函数,以便它们都将使用相同的连接。
答案 2 :(得分:1)
这些类是使用相同的Mysql对象在数据库上连接还是使用2个独立的连接?
在看到完整的代码之前,我们无法回答这个问题。
但在这种情况下扩展看起来是个坏主意。如果你不能说class A is a class B
- 那么你应该更喜欢作文而不是继承。这意味着Catalog_Products
应该引用mysql
对象,但不应扩展它。
为了让您了解继承是否合理的是class mysql extends database
。在这种情况下,你可以说“mysql是一个数据库”,所以只要database
类封装了公共逻辑,这里的扩展看起来是合理的,而mysql
类代表更详细的细节