SOLID এর মধ্যে নীতি প্রয়োগ করা Java: উদাহরণ এবং সর্বোত্তম অনুশীলন

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