SOLID Periaatteiden soveltaminen Java: Esimerkit ja parhaat käytännöt

Single Responsibility Principle(SRP)

Tämä periaate edellyttää, että jokaisella luokalla tulee olla yksi vastuu. Se korostaa, että luokan tulee suorittaa yksi tietty tehtävä, eikä sillä saa olla liikaa syitä muuttua.

Esimerkki: Käyttäjätietojen hallinta ja sähköposti-ilmoitusten lähettäminen.

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)

Tämä periaate kannustaa laajentamaan toimintoja lisäämällä uutta koodia olemassa olevan koodin muokkaamisen sijaan.

Esimerkki: Eri maksutapojen käsittely verkkokauppasovelluksessa.

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)

Tämä periaate väittää, että johdetun luokan objektien tulee olla korvattavissa perusluokan objekteilla vaikuttamatta ohjelman oikeellisuuteen.

Esimerkki: Geometristen muotojen hallinta.

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

Interface Segregation Principle(ISP)

Tämä periaate neuvoo jakamaan rajapinnat pienempiin, jotta vältytään pakottamasta luokkia toteuttamaan menetelmiä, joita he eivät tarvitse.

Esimerkki: Liitännät tietojen päivittämistä ja näyttämistä varten.

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

Dependency Inversion Principle(DIP)

Tämä periaate ehdottaa riippuvuusinjektion käyttöä riippuvuuksien hallintaan.

Esimerkki: Riippuvuuslisäyksen käyttö riippuvuuksien hallintaan.

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

SOLID Muista, että periaatteiden soveltaminen Java tulee tehdä joustavasti projektisi erityistarkoituksen ja ymmärryksesi SOLID ja Java.