📘 C# Blog Series – Blog 32 **“C# Interfaces — Multiple Behaviours को एक Structure में कैसे Define करते हैं?

📘 C# Blog Series – Blog 32

**“C# Interfaces — Multiple Behaviours को एक Structure में कैसे Define करते हैं?






(Real-Life Example: IPacketParser, IDeviceModel, IDatabaseService)”**

Inheritance आपने सीख लिया —
अब आता है Interfaces, जो OOP का सबसे flexible और powerful concept है।

Interfaces आपको allow करते हैं:

  • Multiple behaviours define करना

  • Clean architecture बनाना

  • Loose coupling achieve करना

  • DI (Dependency Injection) implement करना

  • Testable code बनाना

  • Multi-model GPS devices को uniformly handle करना

  • Packet parser को easily switch करना

GPS servers, APIs, billing systems, microservices —
हर जगह interfaces का heavy use होता है।


🟦 1. Interface क्या है? (Simple Definition)

Interface =
एक contract / blueprint
जो बताता है कि class में कौन-कौन से methods होने चाहिए।

लेकिन:

❌ कोई implementation नहीं
✔ सिर्फ method definitions
✔ Class को खुद implement करना पड़ता है

Example:

interface ILogger { void Log(string message); }

🟢 2. Interface Implement कैसे करते हैं?

class ConsoleLogger : ILogger { public void Log(string message) { Console.WriteLine(message); } }

3. Real-Life Example: GPS Packet Parsing Interface

हर model का packet format अलग है:

  • G17

  • S15

  • A20

  • Concox

  • Coban

  • Jimi

सबका parser अलग होगा—
लेकिन method name same होना चाहिए।

Define interface:

interface IPacketParser { void Parse(string packet, GPSDevice device); }

🌟 4. हर model अपनी parsing logic implement करेगा

G17 Parser:

class G17Parser : IPacketParser { public void Parse(string packet, GPSDevice device) { Console.WriteLine("G17 Packet Parsed"); } }

S15 Parser:

class S15Parser : IPacketParser { public void Parse(string packet, GPSDevice device) { Console.WriteLine("S15 Packet Parsed"); } }

अब आपका server:

IPacketParser parser = new G17Parser(); parser.Parse(pkt, device);

Parser change करना आसान।


5. Real GPS Use Case: Dynamic Model Handling

Device table में:

IMEI | Model -----|-------- 8611280... | G17 8611280... | S15

Processor:

IPacketParser parser; if (model == "G17") parser = new G17Parser(); else parser = new S15Parser();

Clean architecture with interface.


🟠 6. Database Service Interface (Very Useful)

You may have:

  • SQL DB

  • MongoDB

  • FileDB

  • In-memory store

Define interface:

interface IDatabaseService { Task SaveLocationAsync(GPSDevice device); }

SQL Implementation:

class SqlDbService : IDatabaseService { public Task SaveLocationAsync(GPSDevice d) { // SQL Code here } }

Now swapping DB is simple.


🔵 7. WebSocket Service Interface

interface IWebSocketService { Task PushAsync(GPSDevice device); }

Use anywhere:

_ws.PushAsync(device);

🟣 8. Real GPS Use Case: IDeviceModel Interface

Different device models may have:

  • SOS support

  • Fuel sensor

  • Temperature support

  • ACC

  • Door sensor

Define interface:

interface IDeviceModel { bool SupportsSOS { get; } bool SupportsFuel { get; } bool SupportsACC { get; } }

Model:

class G17Model : IDeviceModel { public bool SupportsSOS => true; public bool SupportsFuel => false; public bool SupportsACC => true; }

अब features dynamic हो सकते हैं।


🔥 9. Interfaces + Dependency Injection = Industry Standard Architecture

Program.cs:

services.AddScoped<IPacketParser, G17Parser>(); services.AddScoped<IDatabaseService, SqlDbService>(); services.AddScoped<IWebSocketService, WsBroadcaster>();

Controller:

public DeviceController(IDatabaseService db) { _db = db; }

This is clean architecture at enterprise level.


🧠 10. Difference: Interface vs Inheritance

FeatureInterfaceInheritance
Multiple parents allowed✔ Yes❌ No
Common code share❌ No✔ Yes
Flexibility✔ HighMedium
Use caseBehaviorsBase class logic

GPS devices →
Inheritance + Interfaces दोनों का mix best होता है।


📌 11. कब Interface Use करना चाहिए?

✔ जब multiple classes same व्यवहार implement करें
✔ जब DI चाहिए
✔ जब testing आसान बनानी है
✔ जब architecture flexible चाहिए
✔ जब system large हो


🔚 Conclusion

C# Interfaces आपके system को बनाते हैं:

✔ Flexible
✔ Testable
✔ Loosely-coupled
✔ Architecture-friendly
✔ GPS server-ready
✔ Clean and scalable

GPS parser, database service, WebSocket server —
हर जगह interface must-have है।

Post a Comment

0 Comments

Translate

Close Menu