Single Responsibility Principle(SRP)
ეს პრინციპი ამბობს, რომ თითოეულ კლასს ან ვიჯეტს უნდა ჰქონდეს ერთი პასუხისმგებლობა. იგი ხაზს უსვამს იმას, რომ კლასმა ან ვიჯეტმა უნდა შეასრულოს ერთი კონკრეტული ფუნქცია და არ ჰქონდეს ცვლილების ძალიან ბევრი მიზეზი.
მაგალითი: შექმენით ვიჯეტი მომხმარებლის ინფორმაციის საჩვენებლად და ცალკე ვიჯეტი პოსტების სიის საჩვენებლად.
class UserProfileWidget extends StatelessWidget {
// Logic to display user information
}
class PostListWidget extends StatelessWidget {
// Logic to display a list of posts
}
Open/Closed Principle(OCP)
ეს პრინციპი ხელს უწყობს ფუნქციების გაფართოებას ახალი კოდის დამატებით, ვიდრე არსებული კოდის შეცვლით.
მაგალითი: შექმენით ვიჯეტი სხვადასხვა ტიპის პროდუქტების საჩვენებლად ელექტრონული კომერციის აპლიკაციაში.
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)
ეს პრინციპი ამტკიცებს, რომ მიღებული კლასის ობიექტები უნდა იყოს ჩანაცვლებადი საბაზისო კლასის ობიექტებით პროგრამის სისწორეზე გავლენის გარეშე.
მაგალითი: შექმენით ვიჯეტი გეომეტრიული ფორმების სამართავად.
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)
ეს პრინციპი გვირჩევს ინტერფეისების დაშლას უფრო პატარებად, რათა თავიდან აიცილოთ კლასების ან ვიჯეტების იძულება, განახორციელონ ის მეთოდები, რომლებიც მათ არ სჭირდებათ.
მაგალითი: ინტერფეისები მონაცემთა განახლებისა და ჩვენებისთვის.
abstract class Updateable {
void update();
}
abstract class Displayable {
void display();
}
Dependency Inversion Principle(DIP)
ეს პრინციპი გვთავაზობს დამოკიდებულების ინექციის გამოყენებას დამოკიდებულებების სამართავად.
მაგალითი: გამოიყენეთ დამოკიდებულების ინექცია ვიჯეტებში დამოკიდებულებების სამართავად.
class OrderProcessor {
final DBConnection _dbConnection;
final EmailService _emailService;
OrderProcessor(this._dbConnection, this._emailService);
}
დაიმახსოვრეთ, რომ SOLID პრინციპების გამოყენება უნდა მოხდეს მოქნილად, თქვენი პროექტის კონკრეტული მიზნისა და თქვენი გაგების Flutter საფუძველზე. SOLID Flutter