Le të themi se keni një ndërfaqe përdoruesi për të marrë të dhënat për shfaqjen e një pulti të fushatës reklamuese, që duket diçka si kjo

Nëse vëzhgoni nga afër, ky panel ka një grup hyrjesh/kontrollish:

  • Parametrat e detyrueshëm — si reklamuesi, fushata, data e fillimit dhe data e mbarimit
  • Parametrat opsionalë— si Përjashtimi i përdoruesve joaktivë, Limiti i të dhënave, Buxheti, Krahasimi me konkurrentët.
  • Butoni për të marrë dhe Grafikët për t'u shfaqur — Një veprim dhe një rezultat

Tani, mendoni se si mund ta përfaqësojmë këtë operacion të të dhënave në kodin tonë (supozojmë sikur të përdorim Java për të ruajtur të dhënat).

Menjëherë, gjëja e zakonshme që na vjen në mendje është të përfaqësojmë të gjithë parametrat e mësipërm si një objekt klase dhe më pas të kryejmë veprimin. Një klasë tipike që duket si:

Ju shikoni modelin, konstruktorë të shumtë për të siguruar që ne mund të trajtojmë parametrat opsionalë. Gjithashtu, duke siguruar që të ketë kaq shumë vendosës për të siguruar akses për të vendosur të dhënat.

Cili është pengesa/problemet e përdorimit të mësipërm?

  • Shumë konstruktorë: Lloje të ndryshme konstruktorësh për të mbështetur parametrat opsionalë. Për shembull:

  • Përcaktuesit e objekteve(shumë modifikime): Mirëmbajtja e cilësuesve për të lejuar/mos lejuar parametra bëhet shumë e lodhshme. Po sikur të doni ta bëni atë të pandryshueshëm? Pastaj përsëri opsioni një, d.m.th., konstruktor
  • Shkelje e parimit të hapjes/mbylljes: Sa më shumë parametra opsionalë të vijnë, ne duhet të rregullojmë logjikën e krijimit të objektit.

A ka ndonjë mënyrë më të mirë?

Po, ka një mënyrë fantastike dhe kjo është Modeli i Ndërtuesit!

Si punon kjo?

Pra, siç e shihni më lart, këtu është pika kryesore:

  • Gjendja e pandryshueshme: Pasi të vendosen të dhënat e objektit, nuk mund t'i modifikoni të dhënat
  • Kërkesat opsionale të një objekti mund të trajtohen nëpërmjet paraqitjeve më të mira funksionale dhe më të lehta për t'u lexuar
  • Parimi i hapjes/mbylljes i parimeve S.O.L.I.D është i lehtë tani, gjithçka që mund të bëni është të modifikoni dhe ende është efektive për të zgjeruar klasën me më shumë funksionalitet për parametrat opsionalë.
  • Vlerat e paracaktuara për t'u shtuar:Është gjithashtu e lehtë të shtosh vlera të paracaktuara si dontShowInActiveData
  • Përfaqësimi më i thjeshtë i thirrjeve për t'u siguruar që nuk kemi nevojë gjithmonë për referencë të objektit

Një model ndërtues është shumë i dobishëm nëse duam të krijojmë paraqitje të ndryshme të një objekti kompleks ose të përmbledhim krijimin dhe montimin e pjesëve të një objekti kompleks në një objekt Builder të veçantë. Shpresoj se kjo ishte e dobishme! Ju mund ta kontrolloni këtë shembull në më shumë detaje në depon time të GitHub:



Faleminderit per leximin!