Menerapkan SOLID Prinsip dalam JavaScript: Contoh dan Praktik Terbaik

Single Responsibility Principle(SRP)

Prinsip ini menyatakan bahwa setiap kelas harus memiliki satu tanggung jawab. Ini menekankan bahwa kelas harus melakukan satu fungsi tertentu dan tidak memiliki terlalu banyak alasan untuk berubah.

Contoh: Mengelola informasi pengguna dan mengirimkan notifikasi email.

class UserManager {  
  createUser(userData) {  
    // Logic for creating a user  
  }  
}  
  
class EmailService {  
  sendEmail(emailData) {  
    // Logic for sending an email  
  }  
}  

Open/Closed Principle(OCP)

Prinsip ini mendorong perluasan fungsionalitas dengan menambahkan kode baru daripada memodifikasi kode yang sudah ada.

Contoh: Menangani berbagai metode pembayaran dalam aplikasi e-niaga.

class PaymentProcessor {  
  processPayment() {  
    // Common logic for payment processing  
  }  
}  
  
class CreditCardPaymentProcessor extends PaymentProcessor {  
  processPayment() {  
    // Logic for processing credit card payment  
  }  
}  
  
class PayPalPaymentProcessor extends PaymentProcessor {  
  processPayment() {  
    // Logic for processing PayPal payment  
  }  
}  

Liskov Substitution Principle(LSP)

Prinsip ini menegaskan bahwa objek dari kelas turunan harus dapat diganti dengan objek dari kelas dasar tanpa mempengaruhi kebenaran program.

Contoh: Mengelola bentuk geometris.

class Shape {  
  area() {  
    // Common logic for calculating area  
  }  
}  
  
class Rectangle extends Shape {  
  area() {  
    // Logic for calculating area of rectangle  
  }  
}  
  
class Square extends Shape {  
  area() {  
    // Logic for calculating area of square  
  }  
}  

Interface Segregation Principle(ISP)

Prinsip ini menyarankan memecah antarmuka menjadi yang lebih kecil untuk menghindari memaksa kelas untuk mengimplementasikan metode yang tidak mereka perlukan.

Contoh: Antarmuka untuk memperbarui dan menampilkan data.

class UpdateableFeature {  
  updateFeature() {  
    // Logic for updating feature  
  }  
}  
  
class DisplayableFeature {  
  displayFeature() {  
    // Logic for displaying feature  
  }  
}  

Dependency Inversion Principle(DIP)

Prinsip ini menyarankan penggunaan injeksi ketergantungan untuk mengelola ketergantungan.

Contoh: Menggunakan injeksi ketergantungan untuk mengelola ketergantungan.

class OrderProcessor {  
  constructor(dbConnection, emailService) {  
    this.dbConnection = dbConnection;  
    this.emailService = emailService;  
  }  
}  

Ingatlah bahwa menerapkan SOLID prinsip-prinsip JavaScript harus dilakukan secara fleksibel berdasarkan tujuan khusus proyek Anda dan pemahaman Anda tentang SOLID dan JavaScript.