উচ্চ-স্তরের মডিউলগুলি নিম্ন-স্তরের মডিউলগুলির উপর নির্ভর করা উচিত নয়। উভয়েরই বিমূর্ততার উপর নির্ভর করা উচিত। বিমূর্ততা বিশদ বিবরণের উপর নির্ভর করা উচিত নয়। বিশদ বিবরণগুলি বিমূর্ততার উপর নির্ভর করা উচিত৷ এই নীতিটি প্রাথমিকভাবে কোড মডিউলগুলির মধ্যে নির্ভরতা হ্রাস করার সাথে সম্পর্কিত৷
উদাহরণ
নির্ভরতার বিপরীতে কোড
using System;
namespace SolidPrinciples.Dependency.Invertion.Before{
public class Email{
public string ToAddress { get; set; }
public string Subject { get; set; }
public string Content { get; set; }
public void SendEmail(){
//Send email
}
}
public class SMS{
public string PhoneNumber { get; set; }
public string Message { get; set; }
public void SendSMS(){
//Send sms
}
}
public class Notification{
private Email _email;
private SMS _sms;
public Notification(){
_email = new Email();
_sms = new SMS();
}
public void Send(){
_email.SendEmail();
_sms.SendSMS();
}
}
} নির্ভরতার বিপরীতে কোড
using System.Collections.Generic;
namespace SolidPrinciples.Dependency.Invertion.Before{
public interface IMessage{
void SendMessage();
}
public class Email: IMessage{
public string ToAddress { get; set; }
public string Subject { get; set; }
public string Content { get; set; }
public void SendMessage(){
//Send email
}
}
public class SMS: IMessage{
public string PhoneNumber { get; set; }
public string Message { get; set; }
public void SendMessage(){
//Send Sms
}
}
public class Notification{
private ICollection<IMessage> _messages;
public Notification(ICollection<IMessage> messages){
this._messages = messages;
}
public void Send(){
foreach (var message in _messages){
message.SendMessage();
}
}
}
}