Single Responsibility Principle(SRP)
Tämä periaate edellyttää, että jokaisella luokalla tai widgetillä on oltava yksi vastuu. Se korostaa, että luokan tai widgetin tulee suorittaa yksi tietty toiminto, eikä sillä saa olla liikaa syitä muuttaa.
Esimerkki: Luo widget käyttäjätietojen näyttämiseksi ja erillinen widget viestiluettelon näyttämiseksi.
class UserProfileWidget extends StatelessWidget {
// Logic to display user information
}
class PostListWidget extends StatelessWidget {
// Logic to display a list of posts
}
Open/Closed Principle(OCP)
Tämä periaate kannustaa laajentamaan toimintoja lisäämällä uutta koodia olemassa olevan koodin muokkaamisen sijaan.
Esimerkki: Luo widget näyttämään erityyppisiä tuotteita verkkokauppasovelluksessa.
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)
Tämä periaate väittää, että johdetun luokan objektien tulee olla korvattavissa perusluokan objekteilla vaikuttamatta ohjelman oikeellisuuteen.
Esimerkki: Luo widget geometristen muotojen hallitsemiseksi.
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)
Tämä periaate neuvoo jakamaan rajapinnat pienempiin, jotta vältytään pakottamasta luokkia tai widgetejä toteuttamaan menetelmiä, joita he eivät tarvitse.
Esimerkki: Liitännät tietojen päivittämistä ja näyttämistä varten.
abstract class Updateable {
void update();
}
abstract class Displayable {
void display();
}
Dependency Inversion Principle(DIP)
Tämä periaate ehdottaa riippuvuusinjektion käyttöä riippuvuuksien hallintaan.
Esimerkki: Käytä riippuvuuslisäystä hallitaksesi widgetien riippuvuuksia.
class OrderProcessor {
final DBConnection _dbConnection;
final EmailService _emailService;
OrderProcessor(this._dbConnection, this._emailService);
}
SOLID Muista, että periaatteiden soveltaminen Flutter tulee tehdä joustavasti projektisi erityistarkoituksen ja ymmärryksesi SOLID ja Flutter.