The Engines behind the Ivy class (SortEngine, SearchEngine,
InstallEngine, etc.) are now dependent of the IvySettings.  However,
they usually only need a small part of it.  That makes the use (and
the testing) of the engine a little bit more complex because it is not
clear which part of the settings will be used.

I think it should be better to reduce the dependency between the
Engine and the IvySettings.  I see two aproach to do that:
 1. For each engines we define one or more interface implemented by
the IvySettings, and we use the interface(s) in the engine instead of
the IvySettings directly.
 2. Instead of injecting the IvySetting in the engine, we inject the
'part' of the settings that is required by the engine (expl: a
VersionMatcher, a CircularDependencyStrategy, etc...).  This aproach
is I think cleaner because it doesn't introduce new artefacts, but it
change the life-cycle of the engines that will have to be
recreated/updated when the settings is updated.

WDYT?

--
Gilles SCOKART

Reply via email to