Design pattern: factory
15-01-2023
Piccolo recap sui DP
CSHARP
15-01-2023
Piccolo recap sui DP
Uno dei pattern che uso di più ultimamente. Se ho bisogno di un nuovo prodotto non devo più andare a toccare le classi già create ma mi basta aggiungere un nuovo produttore e prodotto.
using System;
namespace FactoryDP
{
abstract class Produttore
{
public abstract IProdotto Prepara();
public string Fai()
{
return "Produttore: " + Prepara().ChiSono();
}
}
class Panetteria : Produttore
{
public override IProdotto Prepara()
{
return new Pagnotta();
}
}
class Pasticceria : Produttore
{
public override IProdotto Prepara()
{
return new Croissant();
}
}
// Se vogli aggiungere un altro
class Pastificio : Produttore
{
public override IProdotto Prepara()
{
// aggiungo un nuovo prodotto
return new Spaghetto();
}
}
public interface IProdotto
{
string ChiSono();
}
class Pagnotta : IProdotto
{
public string ChiSono()
{
return "Ecco una pagnotta";
}
}
class Croissant : IProdotto
{
public string ChiSono()
{
return "Ecco un croissant";
}
}
// Aggiungo il prodotto
class Spaghetto : IProdotto
{
public string ChiSono()
{
return "Ecco uno spaghetto";
}
}
class Cliente
{
public void Main()
{
Console.WriteLine("Cliente: Voglio un prodotto di panetteria\n" + new Panetteria().Fai());
Console.WriteLine("---");
Console.WriteLine("Cliente: Voglio un prodotto di pasticceria\n" + new Pasticceria().Fai());
Console.WriteLine("---");
Console.WriteLine("Cliente: Voglio un prodotto di pastificio\n" + new Pastificio().Fai());
}
}
class Program
{
static void Main(string[] args)
{
new Cliente().Main();
}
}
}