J'essaie de créer une hiérarchie de SQL
objets de requête. Ma classe de base s'appellera Query. Il aura des méthodes comme Query.setTable("tableName")
.Quelque chose de similaire aux traits PHP en Java?
Ensuite, je prévois d'avoir un objet SelectiveQuery
étendre l'objet de requête. Cet objet aura des méthodes comme SelectiveQuery.where("aColumn","=","123")
.
Ensuite plan que je d'avoir UpdateQuery
, SelectQuery
, DeleteQuery
et CountQuery
étendent toutes SelectiveQuery
. Mon dilemme se pose lorsque j'essaie de comprendre comment créer la classe InsertQuery
. Je le veux pour étendre la requête mais ne pas étendre SelectiveQuery
.
Le kicker est que InsertQuery
et UpdateQuery
partagent certaines des mêmes méthodes, telles que setValue("aColumn","aValue")
. Je préférerais seulement maintenir les méthodes UpdateQuery
et InsertQuery
ont en commun dans un endroit. Comment puis-je m'attaquer à cela? Si je programmais en PHP
. Je pense que j'utiliserais Traits pour le faire.
Cela me rend si triste de penser que les développeurs non-RoR doivent encore faire des choses comme ça ... – OneChillDude
@ bwheeler96 Qu'est-ce que cela a à voir avec la question? – fge
Ceci est une question de conception ici. Vous devriez changer votre diagramme: faites une base 'ReadQuery' et' WriteQuery' héritant 'Query', et ajoutez une API' Criterion' que vous utiliseriez seulement pour les requêtes qui en ont besoin. Pas besoin de traits;) – fge