Composite — RexDac Academy

RexDac AcademyNote tehnice · Ajută să ai câteva noțiuni de bază
0%Note publicate citite · pe acest dispozitiv

Principii și arhitectură / Injectarea dependențelor

Composite

Note originale de SunDiaL · Vezi sursa în engleză

Problema: Începi să ai mai multe clase care implementează aceeași interfață. Soluția: Creează o clasă „Composite” care implementează aceeași interfață ca clasele originale.

În acest fel respecți principiul responsabilității unice, deoarece apelantul nu ar trebui să știe sau să fie preocupat dacă acea clasă pe care o apelează reprezintă una sau mai multe clase.

public interface INotificationService
{
	public void PushNotification(string message)
}

public class DesktopNotificationService : INotificationService
{
	public void PushNotification(string message)
	{
		// complicated code here
	}
}

public class MobileNotificationService : INotificationService
{
	public void PushNotification(string message)
	{
		// complicated code here
	}
}


public class CompositeNotificationService : INotificationService
{
	private IEnumerable<INotificationService> services;
	public void PushNotification(string message)
	{
		foreach(INotificationService service in services)
		{
			service.PushNotification(message);
		}
		
	}
}