类似于Java中的PHP特性?
我正在尝试创建SQL
查询对象的层次结构。 我的基类将命名为Query。 它将具有Query.setTable("tableName")
。
然后我计划让SelectiveQuery
对象扩展Query对象。 此对象将具有类似SelectiveQuery.where("aColumn","=","123")
。
然后我计划让UpdateQuery
, SelectQuery
, DeleteQuery
和CountQuery
都扩展SelectiveQuery
。 当我试图弄清楚如何创建InsertQuery
类时,我的困境就出现了。 我希望它扩展Query但不扩展SelectiveQuery
。
问题是InsertQuery
和UpdateQuery
将共享一些相同的方法,例如setValue("aColumn","aValue")
。 我更喜欢只在一个位置维护UpdateQuery
和InsertQuery
的方法。 我该如何解决这个问题? 如果我用PHP
编程。 我想我会用Traits来做这件事。
你可以用mixin替换inheritance,即引入另一个类,如Columns,InsertQuery和SelectiveQuery将该类作为成员,因此语法将是insertQuery.columns().setValue("aColumn", "aValue")
。 另外,看看这里: querydsl 。
如果InsertQuery和UpdateQuery有共同的行为,你不能只创建一个包含常见内容的抽象类,并使InsertQuery和UpdateQuery扩展它吗? 抽象类将扩展SelectiveQuery,因此InsertQuery和UpdateQuery也将inheritance所有其他行为。
但是……也许你可以看一下像Hibernate这样的ORM框架。 无需重新发明轮子等。