类似于Java中的PHP特征?

时间:2013-06-15 17:30:36

标签: java

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

等方法

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

等方法

然后我计划让UpdateQuerySelectQueryDeleteQueryCountQuery全部延伸SelectiveQuery。当我试图找出如何创建InsertQuery类时,我的困境就出现了。我希望它扩展Query但不扩展SelectiveQuery

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

enter image description here

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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