I have a Dao
interface which doesn't have any methods defined.
Then I have multiple classes which implement this interface, like PetDao
and HouseDao
.
For some of the implementation classes, and some of their methods, I need to do an operation.
Let's say this operation is defined in the Operation
class, and the method is doOperation()
.
PetDao
has several methods: Pet selectPet(int petId)
, void insertPet(PetDto pet)
, and I only want to call doOperation()
for insertPet
.
HouseDao
has several methods: House selectHouse(int houseId)
, void deleteHouse(int houseId)
, and I only want to call doOperation()
for deleteHouse
.
I cannot modify the Dao interface. Neither of these classes are instantiated manually, they are all injected.
I could change PetDao
and HouseDao
code to statically call doOperation()
. But this would mean that the Dao classes would have another responsibility than the originally intended, and that I would have a big impact on the source code (there are multiple Daos with multiple methods that I need to track).
I cannot use the Decorator Pattern because Dao
interface does not have any methods.
Are there other options, besides AOP, to achieve this?
doOperation
method in it, and have each DTO implement that interface?But this would mean that the Dao classes would have another responsibility than the originally intended
-- I'm not particularly concerned about this arbitrary distinction, if your proposed solution actually solves the problem you are having in a reasonably good way.