Uporaba SOLID načel v Java: Primeri in najboljše prakse

Single Responsibility Principle(SRP)

To načelo določa, da mora imeti vsak razred eno samo odgovornost. Poudarja, da mora razred opravljati eno specifično funkcijo in ne sme imeti preveč razlogov za spremembo.

Primer: Upravljanje uporabniških podatkov in pošiljanje e-poštnih obvestil.

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)

To načelo spodbuja razširitev funkcionalnosti z dodajanjem nove kode namesto s spreminjanjem obstoječe kode.

Primer: Upravljanje z različnimi načini plačila v aplikaciji za e-trgovino.

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)

To načelo trdi, da morajo biti objekti izpeljanega razreda nadomestljivi za objekte osnovnega razreda, ne da bi to vplivalo na pravilnost programa.

Primer: Upravljanje geometrijskih oblik.

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  
  }  
}  

Načelo ločevanja vmesnika(ISP)

To načelo svetuje razdelitev vmesnikov na manjše, da bi se izognili prisili razredov k izvajanju metod, ki jih ne potrebujejo.

Primer: Vmesniki za posodabljanje in prikazovanje podatkov.

interface UpdateableFeature {  
  void updateFeature();  
}  
  
interface DisplayableFeature {  
  void displayFeature();  
}  

Dependency Inversion Principle(DIP)

To načelo predlaga uporabo vbrizgavanja odvisnosti za upravljanje odvisnosti.

Primer: uporaba vbrizgavanja odvisnosti za upravljanje odvisnosti.

class OrderProcessor {  
  private final DBConnection dbConnection;  
  private final EmailService emailService;  
  
  OrderProcessor(DBConnection dbConnection, EmailService emailService) {  
    this.dbConnection = dbConnection;  
    this.emailService = emailService;  
  }  
}  

SOLID Ne pozabite, da je treba načela uporabljati Java prožno glede na poseben namen vašega projekta in vaše razumevanje SOLID in Java.