Advertisement
fcamuso

Design Patterns - Builder

Jul 22nd, 2022
926
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.61 KB | None | 0 0
  1. namespace SimpleBuilder
  2. {
  3.   internal class Program
  4.   {
  5.     static void Main(string[] args)
  6.     {
  7.       //ClasseOggettoComplesso obj = new ClasseOggettoComplesso(
  8.       //177,
  9.       //new Recapito("Via Trento", "12b", "Ancona", "60121", "Ancona"),
  10.       //new Anagrafica("Zampucci", "Alarico", "Quintilio", "Sesto"),
  11.       //new DatiFiscali("ZMPALR89R30D150G", "10921349844", "20340598887"),
  12.       //new Curriculum("IS Informatica e Telecomunicazioni", "Informatica", "Full Stack Developer"));
  13.  
  14.       ClasseOggettoComplesso obj = new OggettoComplessoBuilder()
  15.        .ConQuestoCurriculum(new Curriculum("IS Informatica e Telecomunicazioni", "Informatica", "Full Stack Developer"))
  16.        .ConQuestoAnagrafica(new Anagrafica("Zampucci", "Alarico", "Quintilio", "Sesto"));      
  17.  
  18.     }
  19.   }
  20.  
  21.   class OggettoComplessoBuilder{
  22.  
  23.     private int Id { get; set; } = -1;
  24.     private Recapito? Recapito { get; set; } = null;
  25.     private Anagrafica? Anagrafica { get; set; } = null;
  26.     private DatiFiscali? DatiFiscali { get; set; } = null;
  27.     private Curriculum? Curriculum { get; set; } = null;
  28.  
  29.     public static implicit operator ClasseOggettoComplesso(OggettoComplessoBuilder builder)
  30.     {
  31.       return builder.Build();
  32.     }
  33.  
  34.     public OggettoComplessoBuilder? ConQuestoId(int id)
  35.     {
  36.       Id = id;  
  37.       return this;
  38.     }
  39.  
  40.     public OggettoComplessoBuilder ConQuestoRecapito( Recapito? recapito)
  41.     {
  42.       Recapito = recapito;
  43.       return this;
  44.     }
  45.  
  46.     public OggettoComplessoBuilder ConQuestoAnagrafica(Anagrafica anagrafica)
  47.     {
  48.       Anagrafica = anagrafica;
  49.       return this;
  50.     }
  51.  
  52.     public OggettoComplessoBuilder ConQuestoDatiFiscali(DatiFiscali datiFiscali)
  53.     {
  54.       DatiFiscali = datiFiscali;
  55.       return this;
  56.     }
  57.  
  58.     public OggettoComplessoBuilder ConQuestoCurriculum(Curriculum curriculum)
  59.     {
  60.       Curriculum = curriculum;
  61.       return this;
  62.     }
  63.  
  64.     public bool objValido()
  65.     {
  66.       return Id > 0 && Anagrafica != null && Anagrafica.Cognome != "";      
  67.     }
  68.  
  69.     public ClasseOggettoComplesso Build() {
  70.       return objValido() ? new ClasseOggettoComplesso( Id, Recapito, Anagrafica, DatiFiscali, Curriculum)
  71.              : throw new InvalidOperationException("Non posso costruire l'oggetto...");
  72.     }
  73.  
  74.   }
  75.  
  76.   class ClasseOggettoComplesso
  77.   {
  78.     private int id;
  79.     private Recapito? recapito;
  80.     private Anagrafica? anagrafica;  
  81.     private DatiFiscali? datiFiscali;  
  82.     private Curriculum? curriculum;  
  83.  
  84.     public ClasseOggettoComplesso(int id, Recapito? recapito, Anagrafica? anagrafica,
  85.                             DatiFiscali? datiFiscali,   Curriculum? curriculum)
  86.     {
  87.       this.id = id;
  88.       this.recapito = recapito;
  89.       this.anagrafica = anagrafica;
  90.       this.datiFiscali = datiFiscali;
  91.       this.curriculum = curriculum;
  92.     }
  93.  
  94.  
  95.     //private int id;
  96.     //public int getId() { return id; }
  97.     //public void setId(int id) { this.id = id; }
  98.  
  99.     public int Id { get => id; }
  100.     public Recapito? Recapito { get => recapito; }
  101.   }
  102.  
  103.   // Dipendenze
  104.   class Recapito
  105.   {
  106.     public string Indirizzo { get; private set; }
  107.     public string Civico { get; private set; }
  108.     public string Comune { get; private set; }
  109.     public string CAP { get; private set; }
  110.     public string Provincia { get; private set; }
  111.     public Recapito(string indirizzo, string civico, string comune, string cap, string provincia)
  112.     {
  113.       Indirizzo = indirizzo;
  114.       Civico = civico;
  115.       Comune = comune;
  116.       CAP = cap;
  117.       Provincia = provincia;
  118.     }
  119.   }
  120.  
  121.   class Anagrafica
  122.   {
  123.     public string Cognome { get; private set; }
  124.     public string Nome { get; private set; }
  125.     public string SecondoNome { get; private set; }
  126.     public string TerzoNome { get; private set; }
  127.    
  128.     public Anagrafica(string cognome, string nome, string secondoNome, string terzoNome)
  129.     { Cognome = cognome; Nome = nome; SecondoNome = secondoNome; TerzoNome = terzoNome;}
  130.   }
  131.  
  132.   class DatiFiscali
  133.   {
  134.     public string CF { get; private set; }
  135.     public string PIVA { get; private set; }
  136.     public string CF5x1000 { get; private set; }
  137.  
  138.     public DatiFiscali(string cf, string piva, string cf5x1000)
  139.     { CF = cf;  PIVA = piva;  CF5x1000 = cf5x1000; }
  140.   }
  141.  
  142.   class Curriculum {
  143.     public string Diploma { get; private set; }
  144.     public string Laurea { get; private set; }
  145.     public string ImpiegoAttuale { get; private set; }
  146.  
  147.     public Curriculum(string diploma, string laurea, string impiegoAttuale)
  148.     {
  149.       Diploma = diploma;
  150.       Laurea = laurea;
  151.       ImpiegoAttuale = impiegoAttuale;  
  152.     }
  153.   }
  154.  
  155. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement