Ho una fabbrica che crea prodotti. Per fare questo ho bisogno di un'istanza di qualche altra classe, che non ha nulla a che fare con la fabbrica attuale. Tuttavia, tutti i prodotti dovrebbero ovviamente utilizzare la stessa istanza di esso, quindi ho fornito quell'istanza alla factory che poi la passa a ogni istanza di Product
:
public class MyFactory
{
Product CreateProduct(MyClass dependency)
{
return new Product(dependency);
}
}
public class Product
{
internal Product(MyClass dependency) { ... }
public void DoSomething() { /* use the dependency */ }
}
Tuttavia mi sembra strano fornire qualcosa alla mia fabbrica che non è necessario ma passa semplicemente ai suoi prodotti.
L'altra alternativa che mi viene in mente è di fornire la dipendenza laddove è effettivamente necessaria, questo è il DoSomething
-method in Product
. Tuttavia, ciò consentirebbe agli utenti della mia API di fornire diverse istanze di MyClass
a diversi prodotti come mostrato qui:
public class Product
{
public void DoSomething(MyClass dependency) { /* use the dependency */ }
}
...
var dependency1 = new MyClass();
var dependency2 = new MyClass();
myProduct.DoSomething(dependency1);
anotherProduct.DoSomething(dependency2);
La domanda quindi è: va bene fornire una dipendenza alla mia fabbrica che in realtà è una dipendenza per l'attuale Product
?