0

SQLクエリ オブジェクトの階層を作成しようとしています。私の基本クラスは Query という名前になります。のようなメソッドがありますQuery.setTable("tableName")

次にSelectiveQuery、Query オブジェクトを拡張するオブジェクトを作成する予定です。このオブジェクトには のようなメソッドがありますSelectiveQuery.where("aColumn","=","123")

次に、、、、UpdateQueryおよびすべてSelectQueryを拡張する予定です。クラスを作成する方法を理解しようとすると、私のジレンマが発生します。Query を拡張したいが、拡張したくない。DeleteQueryCountQuerySelectiveQueryInsertQuerySelectiveQuery

キッカーはそれでInsertQueryありUpdateQuery、 などの同じメソッドのいくつかを共有しsetValue("aColumn","aValue")ます。UpdateQueryメソッドのみを維持しInsertQuery、共通の場所を 1 か所にまとめたいと思います。どうすればこれに対処できますか? でプログラミングしていた場合PHP。これを行うには Traits を使用すると思います。

ここに画像の説明を入力

4

2 に答える 2

1

InsertQuery と UpdateQuery に共通の動作がある場合、共通のものを含む抽象クラスを作成し、それを InsertQuery と UpdateQuery に拡張させることはできませんか? 抽象クラスは SelectiveQuery を拡張するため、InsertQuery と UpdateQuery は他のすべての動作も継承します。

ただし...おそらく、Hibernate のような ORM フレームワークを見ることができます。車輪などを再発明する必要はありません。

于 2013-06-15T17:37:33.880 に答える