Single Responsibility Principle(SRP)
Zasada ta mówi, że każda klasa lub widżet powinna mieć jedną odpowiedzialność. Podkreśla, że klasa lub widżet powinny spełniać jedną konkretną funkcję i nie mieć zbyt wielu powodów do zmian.
Przykład: Utwórz widżet do wyświetlania informacji o użytkowniku i osobny widżet do wyświetlania listy postów.
class UserProfileWidget extends StatelessWidget {
// Logic to display user information
}
class PostListWidget extends StatelessWidget {
// Logic to display a list of posts
}
Open/Closed Principle(OCP)
Ta zasada zachęca do rozszerzania funkcjonalności przez dodawanie nowego kodu zamiast modyfikowania istniejącego kodu.
Przykład: Zbuduj widżet do wyświetlania różnych typów produktów w aplikacji e-commerce.
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)
Zasada ta zakłada, że obiekty klasy pochodnej powinny być zastępowalne obiektami klasy bazowej bez wpływu na poprawność programu.
Przykład: Skonstruuj widżet do zarządzania kształtami geometrycznymi.
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)
Ta zasada zaleca dzielenie interfejsów na mniejsze, aby uniknąć zmuszania klas lub widżetów do implementowania metod, których nie potrzebują.
Przykład: Interfejsy do aktualizacji i wyświetlania danych.
abstract class Updateable {
void update();
}
abstract class Displayable {
void display();
}
Dependency Inversion Principle(DIP)
Ta zasada sugeruje użycie iniekcji zależności do zarządzania zależnościami.
Przykład: Użyj wstrzykiwania zależności do zarządzania zależnościami w widżetach.
class OrderProcessor {
final DBConnection _dbConnection;
final EmailService _emailService;
OrderProcessor(this._dbConnection, this._emailService);
}
Pamiętaj, że stosowanie SOLID zasad w Flutter powinno odbywać się elastycznie, w oparciu o konkretny cel twojego projektu oraz twoje zrozumienie SOLID i Flutter.