Dispongo di un servizio grafico in cui utilizzo le istruzioni if / then / else.
class GraphService
{
function getGraphData(array $products)
{
foreach ($products as $products)
{
$gotPumpGraph = false;
$model = $product['model'];
$item = $product['model'];
if ($model == "a" || $model == "b")
{
$graph = new APump();
$graph->getGraphData($itemId);
$graphData = $graph;
$gotPumpGraph = true;
}
if ($model == "c" || $model == "d")
{
$graph = new CPump(new SomeDifferentDependency());
$graph->getSomeOtherData($itemId);
$graphData = $graph;
$gotPumpGraph = true;
}
if ($gotPumpGraph)
{
//put graphs into common structure
$graphs[] = array(
'itemId' => $itemId,
'graphData' => $graphData
);
}
}
}
}
Ciò che sta facendo il servizio è il consolidamento di vari formati di grafici in uno solo. Quindi ogni blocco if
ha diverse dipendenze e strutture, che sono tutte consolidate in una struttura standardizzata.
L'obiettivo della mia domanda è trovare un insieme adatto di schemi di progettazione, in cui nascondere le diverse dipendenze presenti in ogni blocco if
....
Come?
Il mio primo pensiero è di usare una fabbrica ma ... non vedo un percorso chiaro a questo. Il codice all'interno di if
blocchi è un codice legacy diverso che è diverso per i diversi blocchi e i grafici sono disponibili in diversi formati. Ho pulito un po 'il codice per la domanda, ma ho lasciato diversi metodi / dipendenze nei blocchi if
.