Single Responsibility Principle(SRP)
Šis principas teigia, kad kiekviena klasė ar valdiklis turi turėti vieną atsakomybę. Jame pabrėžiama, kad klasė ar valdiklis turi atlikti vieną konkrečią funkciją ir neturėti per daug priežasčių keistis.
Pavyzdys: sukurkite valdiklį, kad būtų rodoma vartotojo informacija, ir atskirą valdiklį, kad būtų rodomas įrašų sąrašas.
class UserProfileWidget extends StatelessWidget {
// Logic to display user information
}
class PostListWidget extends StatelessWidget {
// Logic to display a list of posts
}
Open/Closed Principle(OCP)
Šis principas skatina išplėsti funkcionalumą pridedant naują kodą, o ne keičiant esamą kodą.
Pavyzdys: sukurkite valdiklį, skirtą įvairių tipų produktams rodyti el. prekybos programoje.
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)
Šis principas teigia, kad išvestinės klasės objektai turi būti pakeisti bazinės klasės objektais, nepažeidžiant programos teisingumo.
Pavyzdys: sukurkite valdiklį, kad galėtumėte valdyti geometrines figūras.
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)
Šis principas pataria suskaidyti sąsajas į mažesnes, kad klasės ar valdikliai nebūtų priversti diegti metodų, kurių jiems nereikia.
Pavyzdys: sąsajos duomenims atnaujinti ir rodyti.
abstract class Updateable {
void update();
}
abstract class Displayable {
void display();
}
Dependency Inversion Principle(DIP)
Pagal šį principą priklausomybių valdymui naudoti priklausomybės injekciją.
Pavyzdys: naudokite priklausomybės injekciją valdiklių priklausomybėms valdyti.
class OrderProcessor {
final DBConnection _dbConnection;
final EmailService _emailService;
OrderProcessor(this._dbConnection, this._emailService);
}
Atminkite, kad SOLID principų taikymas Flutter turėtų būti atliekamas lanksčiai, atsižvelgiant į konkretų jūsų projekto tikslą ir jūsų supratimą apie SOLID ir Flutter.