类似于Java中的PHP特性?

我正在尝试创建SQL查询对象的层次结构。 我的基类将命名为Query。 它将具有Query.setTable("tableName")

然后我计划让SelectiveQuery对象扩展Query对象。 此对象将具有类似SelectiveQuery.where("aColumn","=","123")

然后我计划让UpdateQuerySelectQueryDeleteQueryCountQuery都扩展SelectiveQuery 。 当我试图弄清楚如何创建InsertQuery类时,我的困境就出现了。 我希望它扩展Query但不扩展SelectiveQuery

问题是InsertQueryUpdateQuery将共享一些相同的方法,例如setValue("aColumn","aValue") 。 我更喜欢只在一个位置维护UpdateQueryInsertQuery的方法。 我该如何解决这个问题? 如果我用PHP编程。 我想我会用Traits来做这件事。

在此处输入图像描述

你可以用mixin替换inheritance,即引入另一个类,如Columns,InsertQuery和SelectiveQuery将该类作为成员,因此语法将是insertQuery.columns().setValue("aColumn", "aValue") 。 另外,看看这里: querydsl 。

如果InsertQuery和UpdateQuery有共同的行为,你不能只创建一个包含常见内容的抽象类,并使InsertQuery和UpdateQuery扩展它吗? 抽象类将扩展SelectiveQuery,因此InsertQuery和UpdateQuery也将inheritance所有其他行为。

但是……也许你可以看一下像Hibernate这样的ORM框架。 无需重新发明轮子等。