Single Responsibility Principle(SRP)
یہ اصول کہتا ہے کہ ہر طبقے کی ایک ہی ذمہ داری ہونی چاہیے۔ یہ اس بات پر زور دیتا ہے کہ کلاس کو ایک مخصوص فنکشن انجام دینا چاہئے اور اس میں تبدیلی کی بہت زیادہ وجوہات نہیں ہونی چاہئیں۔
مثال: صارف کی معلومات کا انتظام کرنا اور ای میل اطلاعات بھیجنا۔
class UserManager {
void createUser(UserData userData) {
// Logic for creating a user
}
}
class EmailService {
void sendEmail(EmailData emailData) {
// Logic for sending an email
}
}
Open/Closed Principle(OCP)
یہ اصول موجودہ کوڈ میں ترمیم کرنے کے بجائے نیا کوڈ شامل کرکے فعالیت کو بڑھانے کی حوصلہ افزائی کرتا ہے۔
مثال: ای کامرس ایپلیکیشن میں ادائیگی کے مختلف طریقوں کو ہینڈل کرنا۔
abstract class PaymentProcessor {
abstract void processPayment();
}
class CreditCardPaymentProcessor extends PaymentProcessor {
void processPayment() {
// Logic for processing credit card payment
}
}
class PayPalPaymentProcessor extends PaymentProcessor {
void processPayment() {
// Logic for processing PayPal payment
}
}
Liskov Substitution Principle(LSP)
یہ اصول اس بات پر زور دیتا ہے کہ اخذ شدہ کلاس کی اشیاء کو پروگرام کی درستگی کو متاثر کیے بغیر بیس کلاس کی اشیاء کے لیے متبادل ہونا چاہیے۔
مثال: ہندسی شکلوں کا نظم کرنا۔
abstract class Shape {
abstract double area();
}
class Rectangle extends Shape {
double area() {
// Logic for calculating area of rectangle
}
}
class Square extends Shape {
double area() {
// Logic for calculating area of square
}
}
انٹرفیس سیگریگیشن پرنسپل(ISP)
یہ اصول انٹرفیس کو چھوٹے حصوں میں توڑنے کا مشورہ دیتا ہے تاکہ کلاسوں کو ان طریقوں کو نافذ کرنے پر مجبور کرنے سے گریز کیا جائے جن کی انہیں ضرورت نہیں ہے۔
مثال: ڈیٹا کو اپ ڈیٹ کرنے اور ڈسپلے کرنے کے لیے انٹرفیس۔
interface UpdateableFeature {
void updateFeature();
}
interface DisplayableFeature {
void displayFeature();
}
Dependency Inversion Principle(DIP)
یہ اصول انحصار کو منظم کرنے کے لئے انحصار انجیکشن کا استعمال کرنے کی تجویز کرتا ہے۔
مثال: انحصار کا انتظام کرنے کے لیے انحصار انجکشن کا استعمال۔
class OrderProcessor {
private final DBConnection dbConnection;
private final EmailService emailService;
OrderProcessor(DBConnection dbConnection, EmailService emailService) {
this.dbConnection = dbConnection;
this.emailService = emailService;
}
}
یاد رکھیں کہ SOLID میں اصولوں کو لاگو کرنا آپ کے پروجیکٹ کے مخصوص مقصد اور اور Java کے بارے میں آپ کی سمجھ کی بنیاد پر لچکدار طریقے سے ہونا چاہیے ۔ SOLID Java