Menerapkan SOLID Prinsip dalam Flutter: Contoh dan Amalan Terbaik

Single Responsibility Principle(SRP)

Prinsip ini menyatakan bahawa setiap kelas atau widget harus mempunyai satu tanggungjawab. Ia menekankan bahawa kelas atau widget harus melaksanakan satu fungsi tertentu dan tidak mempunyai terlalu banyak sebab untuk berubah.

Contoh: Cipta widget untuk memaparkan maklumat pengguna dan widget berasingan untuk memaparkan senarai siaran.

class UserProfileWidget extends StatelessWidget {  
  // Logic to display user information  
}  
  
class PostListWidget extends StatelessWidget {  
  // Logic to display a list of posts  
}  

Open/Closed Principle(OCP)

Prinsip ini menggalakkan memperluaskan fungsi dengan menambah kod baharu dan bukannya mengubah suai kod sedia ada.

Contoh: Bina widget untuk memaparkan pelbagai jenis produk dalam apl e-dagang.

abstract class ProductWidget extends StatelessWidget {  
  // Common logic for displaying products  
}  
  
class ElectronicProductWidget extends ProductWidget {  
  // Logic to display electronic products  
}  
  
class ClothingProductWidget extends ProductWidget {  
  // Logic to display clothing products  
}  

Liskov Substitution Principle(LSP)

Prinsip ini menegaskan bahawa objek kelas terbitan harus digantikan untuk objek kelas asas tanpa menjejaskan ketepatan program.

Contoh: Bina widget untuk mengurus bentuk geometri.

abstract class ShapeWidget extends StatelessWidget {  
  // Common logic for displaying shapes  
}  
  
class RectangleWidget extends ShapeWidget {  
  // Logic to display rectangles  
}  
  
class CircleWidget extends ShapeWidget {  
  // Logic to display circles  
}  

Interface Segregation Principle(ISP)

Prinsip ini menasihatkan memecahkan antara muka kepada yang lebih kecil untuk mengelakkan memaksa kelas atau widget untuk melaksanakan kaedah yang mereka tidak perlukan.

Contoh: Antara muka untuk mengemas kini dan memaparkan data.

abstract class Updateable {  
  void update();  
}  
  
abstract class Displayable {  
  void display();  
}  

Dependency Inversion Principle(DIP)

Prinsip ini mencadangkan menggunakan suntikan kebergantungan untuk mengurus kebergantungan.

Contoh: Gunakan suntikan kebergantungan untuk mengurus kebergantungan dalam widget.

class OrderProcessor {  
  final DBConnection _dbConnection;  
  final EmailService _emailService;  
  
  OrderProcessor(this._dbConnection, this._emailService);  
}  

Ingat bahawa penggunaan SOLID prinsip dalam Flutter harus dilakukan secara fleksibel berdasarkan tujuan khusus projek anda dan pemahaman anda tentang SOLID dan Flutter.