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