C#-এ কোড পুনঃব্যবহারযোগ্য (reusable) बनाने için Interface এবং Polymorphism প্রধান টুল। ইন্টারফেস কন্ট্রাক্ট ডিফাইন করে, ক্লাসগুলো তা ইমপ্লিমেন্ট করে।
ইন্টারফেস উদাহরণ
public interface IShape
{
void Display(); // শুধু ডিক্লেরেশন, বডি নেই
double Area { get; } // প্রোপার্টি
}
// ইন্টারফেস নাম সাধারণত 'I' দিয়ে শুরু হয় (কনভেনশন)
ইমপ্লিমেন্টেশন
public class Circle : IShape
{
public double Radius { get; set; }
public double Area => Math.PI * Radius * Radius;
public void Display() => Console.WriteLine($"Circle: Radius={Radius}, Area={Area:F2}");
}
public class Rectangle : IShape
{
public double Width { get; set; }
public double Height { get; set; }
public double Area => Width * Height;
public void Display() => Console.WriteLine($"Rectangle: {Width}x{Height}, Area={Area:F2}");
}
পলিমরফিজম ব্যবহার
var shapes = new List<IShape>
{
new Circle { Radius = 5 },
new Rectangle { Width = 4, Height = 6 }
};
foreach (var shape in shapes)
{
shape.Display(); // রানটাইমে সঠিক মেথড কল হয়
Console.WriteLine($"Area: {shape.Area}");
}
ইন্টারফেসের সুবিধা
- Decoupling: ক্লায়েন্ট কোড কনক্রিট ক্লাস না জানেই কাজ করে।
- Testability: মক (Mock) অবজেক্ট দিয়ে ইউনিট টেস্টিং সহজ।
- Extensibility: নতুন শেপ যোগ করলে এক্সিস্টিং কোড পরিবর্তন লাগে না (OCP)।
- Multiple Implementation: একই ইন্টারফেসের একাধিক বাস্তবায়ন সম্ভব।
অন্যান্য পুনঃব্যবহার টেকনিক
- Abstract Base Class: শেয়ার্ড লজিক + অ্যাবস্ট্রাক্ট মেথড
- Generics: টাইপ-সেফ রিঅusable কোড
- Extension Methods: এক্সিস্টিং টাইপে মেথড যোগ
- Delegates/Func/Action: বিহেভিয়র পাস করা
SOLID nguyênনীতি
ইন্টারফেস ভিত্তিক ডিজাইন Dependency Inversion Principle (DIP) এবং Open/Closed Principle (OCP) পূরণ করে।