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);
}
}
}