Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
"Share" is a nice option of Dice that guarantees not to create an object, but reuse already created one. But I encounter a lot of situations when I want to get the same object only if constructor parameters are the same. Consider common task like:
Suppose
DataFinder
can cache result for searching a record id$id
for a model$model
.If we use "shared" rule of Dice, we will always get same instance of
DataFinder
despite that we might want to get an instance ofDataFinder
for the particular$model
and$id
.This pull request adds
sharedConstructor
rule so you can tell Dice not to create an object if an object of this type was already created with this particular constructor params.In my practice this patterns occurs so many times... I usually do a caching proxy which is okay but it would be nice if we had such a feature in Dice right out of the box.